【问题标题】:What is Xcode's 'Compiler Default' for C++ language settings?什么是 Xcode 的 C++ 语言设置的“编译器默认值”?
【发布时间】:2014-02-16 09:18:18
【问题描述】:

在 Xcode 5(可能还有 4 个)项目设置中 -
对于 Apple LLVM - Language - C++ 设置,我们如何找出“Compiler Default”实际解析为什么?

【问题讨论】:

  • AFAIK 它是 C++03。 (试着写一些简单的 C++11 结构,行吗?)
  • auto 会,基于范围的 for 会,lambda 不会。给你。
  • 哦,那是... 有趣。 我建议您明确设置语言版本(-std=c++98-std=c++03-std=c++0x-std=c++11 )。
  • 是的,大多数项目都是这样做的。事情是:我现在收到链接器错误(不匹配 c++ std lib,尽我所能将乱码分开)与使用 Compiler Default 编译的其他内容.. sigh!
  • 根据帮助检查器,编译器默认为“GNU++98”。

标签: c++ xcode xcode5 clang llvm


【解决方案1】:

根据Xcode 5.0.2中的“Quick Help Inspector”,当前“Compiler Default”为“GNU++98”,对应编译器选项“-std=gnu++98”。

在编译器源码中也可以看到(http://clang.llvm.org/doxygen/CompilerInvocation_8cpp_source.html,01057行):

01033   if (LangStd == LangStandard::lang_unspecified) {
01034     // Based on the base language, pick one.
01035     switch (IK) {
01036     case IK_None:
01037     case IK_AST:
01038     case IK_LLVM_IR:
01039       llvm_unreachable("Invalid input kind!");
01040     case IK_OpenCL:
01041       LangStd = LangStandard::lang_opencl;
01042       break;
01043     case IK_CUDA:
01044       LangStd = LangStandard::lang_cuda;
01045       break;
01046     case IK_Asm:
01047     case IK_C:
01048     case IK_PreprocessedC:
01049     case IK_ObjC:
01050     case IK_PreprocessedObjC:
01051       LangStd = LangStandard::lang_gnu99;
01052       break;
01053     case IK_CXX:
01054     case IK_PreprocessedCXX:
01055     case IK_ObjCXX:
01056     case IK_PreprocessedObjCXX:
01057       LangStd = LangStandard::lang_gnucxx98;
01058       break;
01059     }
01060   }

【讨论】:

  • 干杯!我一定是盲人 - 但构建选项的快速帮助是我尝试过的第一件事,但所有构建设置都是空白的。再说一次,我的 Xcode 5 安装似乎有问题... (stackoverflow.com/questions/20945758/…)
猜你喜欢
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2016-08-10
  • 2011-03-20
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多