2011-01-27 5 views
6

Qual è il modo più conciso ma leggibile per verificare se un GUID è zero? Ho trovato il seguente codice:Come verificare se il GUID è zero

GUID myGuid /* = ... */ ; 
GUID zeroGuid; 
memset(&zeroGuid, 0, sizeof(zeroGuid)); 
if (!IsEqualGUID(myGuid, zeroGuid)) 
{ 
    // ... do something if GUID is not zero ... 
} 

Ma penso che il codice sia troppo maldestro. Naturalmente, potrei definire la mia funzione IsZeroGUID(), ma suppongo che ci sia già una funzione incorporata in C++.

C'è un modo migliore?

+0

IsEqualGUID non è una "funzione built-in" di C++. Fa parte dell'API COM Win32. –

+0

@Axel Gneiting: la definizione 'GUID' non fa parte di C++ - è in Windows SDK insieme a' IsEqualGUID() '. – sharptooth

+0

Non è quello che ho detto? –

risposta

14

Confronta con GUID_NULL:

if(myGuid != GUID_NULL) { 
    //do stuff 
} 
+1

Sembra essere la soluzione più pulita. Anche se 'GUID_NULL' e' operator! = (REFGUID, REFGUID) 'sono definiti nei file di intestazione SDK, è un peccato che non siano documentati nella documentazione MSDN. –

2

myGUID == zeroGUID dovrebbe fare il trucco.