我有一個使用C++ 11功能的eclipse C++項目。它使用cmake進行構建,因此它在eclipse中作爲具有現有makefile的項目進行設置。爲什麼Eclipse認爲clang不支持std :: atomic
它可以在eclipse或命令行中使用makefile進行編譯。但我得到的語法錯誤atomic_bool
說該符號無法解析。我在'C/C++ General - > Preprocessor Include Pattern - > Providers - > CDT GCC內置編譯器設置'下添加了-std=c++11
,我在eclipse中將工具鏈設置爲MacOSX GCC。
注意:其他C++ 11例如thread
或shared_ptr
不會給出任何語法錯誤。來自<atomic>
包頭哪裏有預處理if
聲明
#if !__has_feature(cxx_atomic)
#error <atomic> is not implemented
#else
...
一切的#else下面是灰色的
的錯誤。根據日食,顯然__has_feature(cxx_atomic)
評估爲0。但是如果我從命令行檢查它,它顯示它應該評估爲true。
$ echo '__has_feature(cxx_atomic)' | g++ -x c++ -std=c++11 -E -
# 1 "<stdin>"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 188 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "<stdin>" 2
1
爲什麼__has_feature(cxx_atomic)
值爲false在Eclipse但如果我檢查編譯器本身?
可能重複[Eclipse CDT C++ 11/C++ 0x support](http://stackoverflow.com/questions/9131763/eclipse-cdt-c11-c0x-support) – Praetorian
@Praetorian這不是一個重複。 '-std = C++ 0x'和'__GXX_EXPERIMENTAL_CXX0X__'是C++ 11支持早期的破解。 [第二個答案](http://stackoverflow.com/a/13549029/1046297)提到了我遵循的過程。在我的例子中,我嘗試過的所有C++ 11都能正常工作,除了原子。所以這是一個不同的問題。 –
@Sean Lynch - 我沒有回答你的問題......但爲什麼人們更喜歡CLANG到GCC?我絕對好奇。先謝謝你! – FoggyDay