# знак в качестве префикса в Objective C - PullRequest
1 голос
/ 19 февраля 2012

Может ли кто-нибудь объяснить мне, какова цель, когда мы делаем так

 #if

 // block of codes goes here

 #endif

Ответы [ 3 ]

2 голосов
/ 19 февраля 2012

Это директивы препроцессора C. http://en.wikipedia.org/wiki/C_preprocessor

1 голос
/ 19 февраля 2012

Они preprocessor directives.Директивы препроцессора - это строки, включенные в код наших программ, которые являются не программными операторами, а директивами препроцессора.Этим строкам всегда предшествует знак хеша (#).Препроцессор выполняется до начала фактической компиляции кода, поэтому препроцессор переваривает все эти директивы до того, как операторы сгенерируют любой код.

Эти директивы препроцессора распространяются только на одну строку кода.Как только обнаруживается символ новой строки, директива препроцессора считается завершенной.Точка с запятой (;) не ожидается в конце директивы препроцессора.Единственный способ, которым директива препроцессора может проходить более чем через одну строку, - это предшествовать символу новой строки в конце строки обратной косой чертой ().
Подробнее см. Директивы препроцессора и Использование директив препроцессора Objective-C

0 голосов
/ 19 февраля 2012

Как уже упоминалось, теги с префиксом # являются директивами препроцессора, что приводит к модификации кода, который будет скомпилирован. Более конкретно, приведенный вами пример относится к условной компиляции. Обычный вариант использования будет относиться к компиляции в режиме DEBUG или RELEASE, где препроцессор будет включать или исключать выбранный код следующим образом:

#define DEBUG
#ifdef DEBUG

// block of codes goes here - only survives preprocessing if in DEBUG mode

#endif

В этом случае код может регистрировать выходное сообщение или выполнять какие-либо другие действия, которые вы хотели бы выполнять только в режиме отладки. Если вы хотите скомпилировать в режиме DEBUG, вы определяете DEBUG; в противном случае вы просто закомментируете это. В качестве альтернативы, определение DEBUG может быть выполнено с переключателем компилятора. Дальнейшее обсуждение этого и использование препроцессора для условной компиляции в режиме отладки в целом см. В вопросе 987637 / define-debug-1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...