Язык программирования С является компилируемым языком. Вы пишете свою программу в виде текста; для того чтобы ее запустить, следует выполнить два этапа. На первом текст компилируется в машинные команды; затем эти машинные команды выполняются. Таким образом, как и в любом компилируемом языке программирования, вы можете делать ошибки двух типов.

Чисто синтаксические ошибки (означающие, что вы неверно говорите на языке С) отлавливаются компилятором, так что программа даже не пытается выполняться.

Если ваша программа успешно прошла через компилятор, она будет выполняться, но нет никакой гарантии, что вы не допустили ошибок другого сорта, которые проявляются только в том, что программа ведет себя не так, как предполагалось.

Компилятор С привередлив, но вы должны принимать его замечания с благодарностью. Компилятор - ваш друг, поэтому полюбите его. Он может выдать сообщение, которое выглядит как не относящееся к делу или просто непонятное, но если это произошло, бессмысленно спорить с фактом, что вы сделали что-то неправильно, и компилятор услужливо сообщает об этом. Кроме того, компилятор может предупреждать вас, если что-то покажется ему возможной ошибкой, хотя все находится в рамках допустимого. Эти предупреждения, которые отличаются от сообщений о явной ошибке, также полезны и не должны вами игнорироваться.

Я уже говорил, что запуск программы требует выполнения предыдущего этапа компиляции. Но на самом деле есть еще один этап, который предшествует компиляции, - предварительная обработка (препроцессинг) исходного текста. Предварительная обработка изменяет исходный текст программы, так что когда обработанный текст передается компилятору, он не идентичен написанному вами. Предварительная обработка может показаться сложной и ненужной, но на самом она выполняется в соответствии с данными вами в исходном тексте командами и позволяет писать более ясный и компактный текст программы.

Среда Xcode позволяет просматривать влияние предварительной обработки на текст программы (выберите команду ProductQPerform ActiOПQPreprocess [Имя файла]), так что если вы думаете, что сделали ошибку в директивах препроцессора, то можете отследить его работу. Позже я расскажу о некоторых командах. которые можно отдать препроцессору.

С - язык инструкций. Каждая инструкция заканчивается точкой с запятой. (Отсутствие точки с запятой - распространенная ошибка новичков.) Для удобочитаемости программы пишутся преимущественно с одной инструкцией в строке, но это ни в коем случае не строгое правило: длинные инструкции (которые, к сожалению, возникают очень часто из-за многословности Objective-C) обычно разнесены по нескольким строкам, а очень короткие инструкции иногда пишутся по две-три в одной строке. Однако разбить строку где угодно просто так нельзя; например, строковый литерал не может содержать символ "возврата каретки". Отступы не несут никакого языкового смысла и являются вопросом соглашения о стиле программирования (о чем программисты на С часто спорят с почти фанатичным пылом); среда Xcode "разумно" помогает программисту, автоматически добавляя отступы, и этим можно воспользоваться, чтобы легко получить удобочитаемый код, и убедиться, что вы не сделали никаких грубых синтаксических ошибок.

Комментарии в языке С из книги K&R имеют вид/* ... */; сам комментарий между косыми чертами со звездочками может занимать несколько строк (K&R 1.2). В современных версиях С комментарий может располагаться после двух косых черт {/ /); правило применения такого комментария гласит, что все, следующее за двумя косыми чертами, до конца строки игнорируется:

 

int lower = 0; // Нижний предел температурной таблицы

 

Такие комментарии иногда называют комментариями в стиле С++, и для кратких пояснений и примечаний они существенно удобнее синтаксиса комментариев из книги K&R.

Язык программирования С (и, следовательно, Objective-C) чувствителен к регистру символов. Все имена чувствительны к регистру. Например, не существует такого типа, как Int, имеется тип int. Если вы объявите переменную lower типа int, а затем попытаетесь говорить о ней, как о Lower, компилятор пожалуется на то, что такая переменная ему неизвестна. По соглашению имена переменных: начинаются со строчной буквы.

 

История компилятора

Изначально компилятором Xcode был свободный компилятор с открытым кодом GCC. Однако в конце концов Apple разработала собственный свободный компилятор с открытым кодом LLVM, известный также как Claпg, тем самым сделав доступными все усовершенствования, которые были невозможны в рамках GCC. Изменение компилятора - слишком крутой поворот, который Apple выполняла поэтапно.

В версии Xcode 3 наряду с компиляторами LLVM и GCC компания Apple предложила гибридный компилятор LLVM-GCC, который предоставлял преимущества компиляции LLVM, в то время как синтаксический анализ кода для максимальной обратной совместимости выполнялся с помощью GCC, при этом последний не является компилятором по умолчанию.

  • В версии Xcode 4 компилятор LLVM-GCC стал компилятором по умолчанию, но GCC оставался доступным.
  • В версии Xcode 4.2 компилятором по умолчанию стал LLVM 3.0, а чистый GCC был изъят.
  • В версии Xcode 4.6 произошло обновление компилятора до LLVM 4.2.
  • В версии Xcode 5 был изъят LLVM-GCC; текущая версия компилятора - LLVM 5.0, и на этом переход от GCC к LLVM полностью завершен.

Похожие статьи

 

 

 

Добавить комментарий