2014-03-26 47 views
2

我有一個使用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例如threadshared_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但如果我檢查編譯器本身?

+0

可能重複[Eclipse CDT C++ 11/C++ 0x support](http://stackoverflow.com/questions/9131763/eclipse-cdt-c11-c0x-support) – Praetorian

+0

@Praetorian這不是一個重複。 '-std = C++ 0x'和'__GXX_EXPERIMENTAL_CXX0X__'是C++ 11支持早期的破解。 [第二個答案](http://stackoverflow.com/a/13549029/1046297)提到了我遵循的過程。在我的例子中,我嘗試過的所有C++ 11都能正常工作,除了原子。所以這是一個不同的問題。 –

+0

@Sean Lynch - 我沒有回答你的問題......但爲什麼人們更喜歡CLANG到GCC?我絕對好奇。先謝謝你! – FoggyDay

回答

0

我也遇到過這個問題,其他的C++ 11功能都支持,但是原子不支持。

相關問題