什么是GCC_NO_COMMON_BLOCKS用于?

Lio*_*Lio 26 xcode objective-c llvm ios

我发现我的项目设置了

GCC_NO_COMMON_BLOCKS = NO 
Run Code Online (Sandbox Code Playgroud)

在Apple LLVM编译器3.1 - 代码生成设置下,为"无公共块"

在此输入图像描述

我想知道:那个国旗用的是什么?

非常感谢

Jus*_*Sid 42

来自Xcode的快速帮助:

在C中,在对象文件的数据部分中分配甚至未初始化的全局变量,而不是将它们生成为公共块.这样做的结果是,如果在两个不同的编译中声明了相同的变量(没有extern),则在链接它们时会出现错误.这可能有用的唯一原因是,如果您希望验证程序是否可以在其他始终以这种方式工作的系统上运行.

您可以在右侧窗格的"显示快速帮助检查器"选项卡下找到快速帮助: Xcode快速帮助检查器

  • Xcode 8建议的设置似乎打开了此选项. (5认同)
  • 谢谢!我不知道XCode的快速帮助也有助于构建设置和那些东西.这样可以节省一些时间. (4认同)
  • 默认情况下,它在Xcode 8中出现的问题是它会在很多年内使绝大多数开发人员弄乱一大堆现有项目.而且大多数情况下产生的"错误"(如果不是全部)都不会指向哪些变量是"常见的",错误也没有暗示它甚至与"常见"变量相关,也没有暗示错误的根是(自动)编译器设置更改导致了差异. (3认同)
  • 我阅读了快速帮助,但仍然不知道为什么我要这样做或不这样做。Xcode 9 在我的一个项目中更改了此设置并破坏了构建。我能够修改我的代码,以便保留公共块的 YES 设置,但我仍然不知道为什么建议这样做以及它的好处可能是什么。 (2认同)