[英]clang doesn't know std::atomic_bool, but XCode does
我正在嘗試編譯聲明類型為std :: atomic_bool的變量的C ++ 11代碼。 這是在Mac OS 10.8.2上使用clang:
clang --version
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix
clang抱怨std :: atomic_bool:
clang++ -c -stdlib=libc++ -msse4 -std=c++11 -Wno-unused-parameter -I. -o query.o query.cpp
In file included from query.cpp:1:
[...]
./threadutils.h:33:10: error: no type named 'atomic_bool' in namespace 'std'; did you mean 'atomic_long'?
std::atomic_bool work;
但是,使用相同的編譯器在XCode項目中編譯相同的文件。 所以我假設我在手動編譯器調用中遺漏了一些東西。
我嘗試了一些變體,如-std=c++0x
和-std=gnu++11
,但無濟於事。
我想到了。 不幸的是,我在我的問題中設置了一個錯誤的標志:它在XCode中也不起作用,我在那里導入了不同版本的源文件。
問題是C ++ 11定義了“與指定的atomic<bool>
對應的命名類型atomic_bool
”,但是clang不支持它 。
將類型從atomic_bool
重命名為atomic<bool>
修復它。
我發現了同樣的問題。 在我的情況下,我通過包含原子來解決它:
#include <atomic>
static std::atomic_bool varname;
在此之后,我可以在Linux(Ubuntu)上使用std = c ++ 11調用g ++以及在XCode上編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.