Entrambe le risposte esistenti sono errate e la maggior parte dei commenti.
<cstdatomic>
non è un'intestazione definita in standard.
È stato definito in vecchie bozze C++ 0x ma non è nello standard C++ 11 finale, solo <atomic>
. Quindi è stato incluso come parte del supporto sperimentale C++ 0x di GCC 4.4, ma poi è stato rinominato per le versioni successive quando è stato rinominato nelle bozze di C++ 0x (che è stato fatto nel 2009 con N2992).
Non si dovrebbe usare <cstdatomic>
a meno che non si è bloccati con GCC 4.4 e felice di utilizzare una versione incompleta e buggy di atomici C++ 11. (Non ho idea del perché GCC 4.6 di Kubuntu includa l'intestazione, non è nelle versioni GCC 4.6 upstream, deve essere una patch Ubuntu o Kubuntu o Linaro.)
<atomic>
è l'intestazione standard C++ 11 che può fare affidamento su qualsiasi implementazione C++ 11 che risponda ragionevolmente.
<stdatomic.h>
è l'intestazione C11, ma la libreria C++ 11 si basa sulla libreria C99, quindi non include <stdatomic.h>
e non fornisce uno <cstdatomic>
corrispondente.
fonte
2014-12-06 15:37:13
Bene, qual è la differenza tra 'cstdio' e' iostream'? Ovviamente è più o meno la stessa funzionalità, ma uno è C++ corretto e l'altro è C legacy. –