用 c++17 编译 mac
Compile with c++17 mac
我无法使用 -std=c++17 进行编译,我得到了:
error: invalid value 'c++17' in '-std=c++17'
但是我更新了 Xcode 和 clang。
我的 Clang 版本是:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin`
我加载最新的 header 就像可选的,我必须做
#include <experimental/optional>
而不是
#include <optional>
这是我通过此测试得到的结果:
#include <experimental/optional>
int main(int, char* []) {
return 0;
}
g++ -std=c++17 -o test test.cpp
error: invalid value 'c++17' in '-std=c++17'
g++ -std=c++1z -o test test.cpp
您尝试过 c++1z 参数吗?
还要注意我的测试编译时没有提供 -std=c++1z 参数。
我想我使用的 OSX 版本比你的更新:
Target: x86_64-apple-darwin17.4.0
你应该使用 -std=c++1z
作为标志。
Xcode 自带完整的工具链,包括 headers 和实际的编译器。
Apple LLVM version 9.0.0 (clang-900.0.39.2)
(Xcode 9.2 附带)不支持使用标志 -std=c++17
,因为它太旧了。可选 header 仅包含在文件夹 experimental/
下。这就是为什么你需要 #include <experimental/optional>
为了使用 Xcode 9.2 附带的编译器编译支持 c++17 的程序,您需要使用 -std=c++1z
标志。
Xcode 9.3 将附带 Apple LLVM version 9.1.0 (clang-902.0.30)
,它支持 -std=c++17
标志。然而 optional
header 截至今天仍在 experimental/
子目录下。这可能会在测试期间发生变化。
自 macos 15 起支持 c++17 的 libc++
-std=c++1z
也适用于 Apple LLVM 版本 8.1.0 (clang-802.0.42)
我无法使用 -std=c++17 进行编译,我得到了:
error: invalid value 'c++17' in '-std=c++17'
但是我更新了 Xcode 和 clang。
我的 Clang 版本是:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin`
我加载最新的 header 就像可选的,我必须做
#include <experimental/optional>
而不是
#include <optional>
这是我通过此测试得到的结果:
#include <experimental/optional>
int main(int, char* []) {
return 0;
}
g++ -std=c++17 -o test test.cpp
error: invalid value 'c++17' in '-std=c++17'
g++ -std=c++1z -o test test.cpp
您尝试过 c++1z 参数吗? 还要注意我的测试编译时没有提供 -std=c++1z 参数。
我想我使用的 OSX 版本比你的更新:
Target: x86_64-apple-darwin17.4.0
你应该使用 -std=c++1z
作为标志。
Xcode 自带完整的工具链,包括 headers 和实际的编译器。
Apple LLVM version 9.0.0 (clang-900.0.39.2)
(Xcode 9.2 附带)不支持使用标志 -std=c++17
,因为它太旧了。可选 header 仅包含在文件夹 experimental/
下。这就是为什么你需要 #include <experimental/optional>
为了使用 Xcode 9.2 附带的编译器编译支持 c++17 的程序,您需要使用 -std=c++1z
标志。
Xcode 9.3 将附带 Apple LLVM version 9.1.0 (clang-902.0.30)
,它支持 -std=c++17
标志。然而 optional
header 截至今天仍在 experimental/
子目录下。这可能会在测试期间发生变化。
自 macos 15 起支持 c++17 的 libc++
-std=c++1z
也适用于 Apple LLVM 版本 8.1.0 (clang-802.0.42)