【问题标题】:In Xcode 4.5, what is "Compiler Default" for "C++ Standard Library" and "C++ Language Dialect"?在 Xcode 4.5 中,“C++ 标准库”和“C++ 语言方言”的“编译器默认值”是什么?
【发布时间】:2012-10-12 18:43:22
【问题描述】:

Xcode 4.5 中“C++ 标准库”和“C++ 语言方言”的“编译器默认值”的值是多少?

我的猜测是 libstdc++ 和 GNU++98,但最好能澄清一下。

来自Xcode 4.5 release notes

使用此 Xcode 版本创建的项目使用新的 libc++ 标准 C++ 库的实现。 libc++ 库是 仅适用于 iOS 5.0 及更高版本和 OS X 10.7 及更高版本。 12221787

在您的 iOS 和 OS X 早期版本上启用部署 项目,将 C++ 标准库构建设置设置为 libstdc++(Gnu C++ 标准库)。

我注意到创建一个新项目明确设置了 GNU++11 和 libc++,但“编译器默认值”可能是别的东西。

【问题讨论】:

    标签: c++ xcode c++11 libstdc++ libc++


    【解决方案1】:

    这是找出答案的最佳方法:

     #include <iostream>
    
    int main()
    {
    #ifdef _LIBCPP_VERSION
        std::cout << "Using libc++\n";
    #else
        std::cout << "Using libstdc++\n";
    #endif
    #ifdef __GXX_EXPERIMENTAL_CXX0X__
    #if __cplusplus == 1
        std::cout << "Language mode = gnu++11\n";
    #else
        std::cout << "Language mode = c++11\n";
    #endif
    #else
    #if __cplusplus == 1
        std::cout << "Language mode = gnu++98\n";
    #else
        std::cout << "Language mode = c++98\n";
    #endif
    #endif
    }
    

    只需使用编译器默认值构建一个测试项目并运行它。

    【讨论】:

    • 太好了,感谢您提供的有用的 sn-p。答案和我想的一样:“libstdc++”和“gnu++98”。
    • @ribbonwind 这很奇怪;对我来说,结果是 libc++ 和 gnu++11。
    • 这里对于所询问和回答的内容有些混淆。我假设ribbonwind 在构建设置中选择时询问“编译器默认值”是什么意思。其他人正在询问/回答默认构建设置是什么。这是两个不同的东西。
    • 我得到了libstdc++gnu++98,即使我在Xcode 8 中将C++ Standard Library 选项设置为libc++ (...)。这些宏是否仍然适用?
    • @IulianOnofrei:我刚刚使用 Xcode 8 命令行工具使用 -E -dM 运行了一个 HelloWorld,它输出了 #define _LIBCPP_VERSION 3700。我没有确认 IDE 在 GUI 中显示选项的方式没有错误。
    猜你喜欢
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多