2012-06-27 4 views
21

я обнаружил, что мой проект устанавливаетДля чего используется GCC_NO_COMMON_BLOCKS?

GCC_NO_COMMON_BLOCKS = NO 

под Apple, LLVM Compiler 3.1 - параметры генерации кода, как "Нет общих блоков"

enter image description here

Я хотел бы знать: что это такое используется флаг?

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

ответ

31

С быстрой помощи Xcode по:

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

Вы можете найти быструю помощь в правой панели, на вкладке "Show Quick Help Ревизора": Xcode Quick Help Inspector

+4

Спасибо! Я не знал, что быстрая помощь XCode также помогла с настройками сборки и тем материалом. Это спасло бы меня некоторое время. – Lio

+5

Этот параметр, кажется, включен с помощью рекомендованных Xcode 8 настроек. – Richard

+2

проблема его включения по умолчанию в Xcode 8 заключается в том, что в течение многих лет будет запущена целая куча существующих проектов, возможно, подавляющее большинство разработчиков за многие годы .. и «ошибка», сгенерированная в большинстве случаев (если не все), будет не указывают на то, какие переменные являются «общими», и ошибка не дает намека на то, что она даже связана с «общими» переменными, и нет никакого намека на то, что корень ошибки был (автоматическим) изменением настроек компилятора, вызвавшим разницу. – hokkuk

Смежные вопросы