Оба существующих ответа неверны и большинство комментариев тоже.
<cstdatomic>
не является заголовком, определенным в любым стандартом.
Он был определен в старых черновиках C++ 0x, но не в последнем стандарте C++ 11, только <atomic>
. Поэтому он был включен как часть экспериментальной поддержки C++ 0x GCC 4.4, но затем переименован для последующих выпусков, когда он был переименован в черновики C++ 0x (что было сделано в 2009 году N2992).
Вам не следует использовать <cstdatomic>
, если вы не застряли в GCC 4.4 и не можете использовать неполную и глючную версию атома C++ 11. (Я понятия не имею, почему GCC 4.6 Kubuntu включает заголовок, он не находится в восходящих версиях GCC 4.6, это должен быть патч Ubuntu или Kubuntu или Linaro.)
<atomic>
- стандартный заголовок C++ 11, который вы может полагаться на любую разумно соответствующую реализацию C++ 11.
<stdatomic.h>
является заголовком C11, но библиотека C++ 11 основана на библиотеке C99, поэтому не включает <stdatomic.h>
и не соответствует соответствующему ей <cstdatomic>
.
В чем разница между 'cstdio' и' iostream'? Конечно, это более или менее та же функциональность, но одна из них - C++, а другая - C. –