Для чего используется GCC_NO_COMMON_BLOCKS?

Я обнаружил, что мой проект устанавливает

GCC_NO_COMMON_BLOCKS = NO 

в Apple LLVM Compiler 3.1 - настройки генерации кода, так как «нет общих блоков»;

enter image description here

Я бы хотел знать:what is that flag used for?

большое спасибо

Ответы на вопрос(1)

Решение Вопроса

In C, выделяйте даже неинициализированные глобальные переменные в разделе данных объектного файла, а не генерируйте их как общие блоки. Это приводит к тому, что если одна и та же переменная объявлена (без extern) в двух разных компиляциях, вы получите ошибку, когда будете связывать их. Единственная причина, по которой это может быть полезно, - если вы хотите убедиться, что программа будет работать на других системах, которые всегда работают таким образом.

Вы можете найти быструю справку на правой панели на вкладке «Показать инспектора быстрой справки»:

 Lio27 июн. 2012 г., 21:12
Благодарность! Я не знал, что быстрая помощь XCode также помогла с настройками сборки и тому подобным. Это бы сэкономило мне время.
 hokkuk19 апр. 2017 г., 00:13
проблема того, что он включен по умолчанию в Xcode 8, состоит в том, что он испортит целую кучу существующих проектов, вероятно, подавляющим большинством разработчиков в течение многих лет ... и "ошибка", генерируемая в большинстве случаев (если не во всех), будет не указывает на то, какие переменные являются «общими», и ошибка не дает намека на то, что она даже связана с «общими» переменными, и нет никаких намеков на то, что корень ошибки был (автоматическим) изменением настроек компилятора, которое вызвало разницу.
 Richard24 сент. 2016 г., 20:59
Эта опция, кажется, включена рекомендованными настройками Xcode 8.
 Chuck Krutsinger27 сент. 2017 г., 00:39
Эта настройка была включена рекомендованными настройками Xcode 9 и сломала мою сборку!
 Chuck Krutsinger27 сент. 2017 г., 01:07
Я читаю быструю помощь и до сих пор не знаю, зачем мне это делать или нет. Xcode 9 изменил эту настройку на одном из моих проектов и сломал сборку. Я смог изменить свой код, чтобы сохранить настройку YES для общих блоков, но я до сих пор не знаю, почему это рекомендуется и каковы его преимущества.

Ваш ответ на вопрос