2013-11-26 10 views

risposta

8

ATOMIC_FLAG_INIT è una macro definita implementazione che è garantito per lavorare nelle espressioni come quella che hai postato. È utile per inizializzare un atomic_flag che potresti aver definito nello spazio dei nomi, ad esempio. Garantisce inoltre che il flag venga cancellato e che se lo stesso flag ha una durata di archiviazione statica, anche l'inizializzazione sarà statica.

La seconda serie di istruzioni è l'inizializzazione seguita dalla cancellazione della bandiera. Poiché lo stato di atomic_flag è una costruzione post predefinita non specificata, significa che il flag si trova in uno stato non specificato fino a quando non è stato eseguito il clear().

5

Si (per 29.7[atomics.flag] §4):

La macro ATOMIC_FLAG_INIT sono definiti in modo tale che esso può essere utilizzato per inizializzare un oggetto di tipo atomic_flag allo stato chiaro. Per un oggetto a durata statica, tale inizializzazione deve essere statica. Non è specificato se un oggetto atomic_flag non inizializzato ha uno stato iniziale di set o clear.

Problemi correlati