GCC - The Complete Reference (537669), страница 32
Текст из файла (страница 32)
Установление любой из опций ограничения или уточнения использования регистра букв не действует на комментарии, символьные константы или поля типа ло11ехйеЬ. 146 Часть И. Использование Сборного Компилятора Таблица 7.2, Опции для назначения требований к регистру букв исходного кода Ввтраеавмв 4туввиаа Оамваааеаамм виана йаюеввмв аваев -ЕтегЬ-севе-еиу -Евтгл-севе-иррег -Е1исг1и-севе-еиу -ЕсиСГ1В-СЕВЕ-иорег -Е1икг1и-севе-1сиег -Е1исгси-севе-1и1ксер -ЕетскьсХ-севе-аиу -ЕвутосХ-севе-иррег -Ееттьсз-севе-1оиег -Евугао1-севе-Еваасер -ЕтесЬ-севе-1сиег -ЕтегЬ-севе-1и1ссер Таблица 73. Четыре возможные т ебовання к регистру букв Олива Ол воевав Ограничения иа применение Гого или иного регистра отсутвуют, все комбинации равнозначны.
Это значит, что: виисс1си, вонсезои, еиисссси, гиист1си имеют одно значение. Все буквы должны быть заглавными, т.е. набраны в верхнем регистре клавиатуры. Все буквы должны быть строчными, т.е. набраны е июкием регистре клавиатуры. Начальная буква долина быть в верхнем регистре, а есе остальные — в нижнем. Например:иех1тит, Виисг1си, Рс, аегиги. †...-иррег -...
-1оиег ...-1и1ссер Таблица 7.4, Управление регистром буквенных знаков ассемблерных инструкций, передаваемых из исходного кода Выводимый ассемблерный код передается из исходиика иа входе компилятора без изменений. Все ассемблериыа инструкции из исхадиика преобРазУется в заглавные буквы. Все ассемблерные инструкции выводятся строчными бУквами. -Евсигсе-саве-ргевеа ге -Евсигсе-севе-иррег -Евоигсе-севе-1ииег Определенные сочетания опций из таблиц 7,2 и 7.4 являются общеупотребительными, вместо них может назначаться одна нз опций перечисленных в таблице 7.5. В таблице 7.2 перечислены опции, используемые для применения тех или иных требований к регистру букв исходного кода программы.
Существуют отдельные установки для ключевых слов, встроенных функций и лля имен, определяемых в программе (символнческих имен). Таблица 7.3 отдельно описывает особенности каждой из четырех разновидностей опций (апу, иррег, 1отгег и 1п1ссар), показанных в таблице 7.2. В таблице 7.4 показаны три установки, определяющие регистр передаваемых нз исходного кода ассемблерных инструкций Необходимо применять эти опции с осторожностью, поскольку внешние ссылки должны в точности соответствовать именам подпрограмм, используемых при компоновке библиотек. Глава 7. Компиляция программ на языке Гогггап 147 Таблица 7.5.
Отдельные опции, определяющие регистр букв авода и вывода Эта опция устанавливает требования, чтобы все начиналось с заглавных букв, кроме комментариев и символьных констант. Те же требования устанавливаются определением всех трех опций -1п1ссар из таблицы 7.2 и опции -Евссгсе-саве-ргевегте. -Есаве-1пьвсар Каноническая модель ниах, где все исходные файлы должны быть набраны строчными буквами. Таким же образом действует применение всех трех опций -1снвг из таблицы 7.2 и опции -Евосгсе-саве-зонег. -Есаве-1онвг Эта опция сохраняет регистр букв исходного текста программы, в том числе код на ассемблере.
То же, что и определение всех трех опций -апу из таблицы 7.2 и опции -Евосгсв-саве-ргввеггв. -Есаее-ргевегте Эта опция применяет требования строгого соответствия стандарту АМЭ! гоцгап 77, где весь исходный код должен быть в верхнем регистре, кроме комментариев и символьных констант. То же, что и определение всех трех опций -иррег из таблицы 7.2 и опции -Еессгсе-севе-ргевегге. -Есаее-всгвсс-сррег Эта опция указывает, что все должно быть в нижнем регистре, кроме комментариев и символьных констант. Таким же образом действует применение всех трех опций -1снег опций из таблицы 7.2 и опции -Евоигсв-севе-ргевегге.
-Есаве-вгг1ск-1снег Классическая модель стандарта АМЗА гоцгап 77, где весь исходный код должен быть в верхнем регистре. То же, что и определение всех трех опций -нррег из таблицы 7.2 и опции и -Евосгсе-саве-сррег. -Есаве-сррег Особенности ЕогТгап 90 Этот раздел содержит в себе краткое описание некоторых наиболее часто употребимых особенностей стандарта гогсгап 90, поддерживаемых д77. Конечно, перечислены они не все, потому что спецификаций этого языка очень много и они довольно сложньь Здесь описаны только те из них, которые поддерживаются д77 без каких-либо дополнительных установок и флагов.
Символьные строки (Спагас1ег 51пп95) Имя выделенной конструкции кода (Соп51гис1 йа)пе) лзгя консглрукции может использоваться для выделения исполняемого блока уп- рвзхяЕМОГО ОПЕратОраМИ ттг„втО ИЛИ ЭжпжОт Сднж. В СЛЕдуЮШЕМ ПрИМЕрЕ ИСПОЛЬ- зуется имя конструкции спаева как определитель начала и конца блока 1Р; Константы типа символьных строк (спагасгег згг)пяз) могут быть ограничены как двойными кавычками, так и одинарными.
Например строка '")зе11о ыог1СГ" имееттоже значение, что и ')зе11о ыог111 '. В строке, записанной с двойными кавычкаия, отдельный содержащийся в строке символ двойной кавычки обозначается ларой хвойных кавычек. Например ь вау ""Нз """ — литерал, содержащий строку аау "Нз". Символьные константы могут иметь нулевую длину (Т.е. не содержать символов). также возможно объявление подстроки, пример такого объявления имеет форму 'ЬЕ11О тЕОГ1СТ' (7 ге), ОНО раВНОЗНаЧНО 'МОГ1'. 148 Часть и. Использование Сборного Компилятора С соппаше.
Р с РВОПВаи соппеше Кеу = 12 спеша: 1Р(кеу .дс. 1О> тНКМ Кеу >теу — 1 Икттв(~,10> хеу КМП 1Р спеша РОВИат( Кеу= ,15> КМП РВОПВаи сопевши 1О Операторы СУСЛЕ и ЕХ!Т С сус1е.т РВООВаи сусзе ПО 10 1=1,3 1Р (1 .КО. 2> СУСЬК ивттк(*,зо> 1 1о сомттм(гя ПО 20 1=1,3 *Р (1 .ко. 2> кхтт ивхтк(*,зо> 1 2о сомтхмок 30 РовМАт('1=',15> ЮП> РВОПВаи сусзе Вот что мы получим на выходе этой программы: 1 1= 3 1 Первый цикл выводит число 1 при первом его повторении, при втором повторении пропускает оператор Мжттж (при переходе на конец цикла), при третьем повторении выводит число 3.
Второй цикл выводит число 1 при первом повторении, на втором повторении происходит выход из цикла. Оператор 00 ЧЧНИ.Е Оператор по мнтпж образует цикл, он используется с логическим выражением, блок цикла закрывается оператором жмп по. Например: Оператор кхтт используется для немедленного выхода из цикла и для перехода к следующему за этим циклом оператору. То есть выполнение жххт равнозначно применению внутри цикла оператора пото для перехода на первый оператор, следующий за циклом. (Если вы знакомы с языком С, то жхтт в яЗыке Гогггал имеет то же значение, что и Ьхеа>е в С).
Оператор стспк используется для пропуска оставшейся части тела цикла и перехода к следующему его повторению (итерации). Поэтому выполнение сусанн в цикле равнозначно применению внутри цикла оператора пото для перехода на оператор СОМтткцж, последний оператор цикла. (Если вы знакомы с синтаксисом языка С, то суси в Ро>тгал имеет то же значение, что и сопс1пие в языке С). В следующем примере показано использование обоих операторов сусанн и жххт: Глава г. Компиляция программ на языке Гонгал 149 С с)они11е. г РВООВВМ с)он)сххе )с = 5 Оо ИНХти ( >с .дс.
О) митте(*,20> )с )с = )с - 1 ЕИР ПО 20 Ровмнт('Хч',15) ЕИП РВООВЗМ дкегп11Е Бесконечный цикл 00 Если в строке нет ничего, кроме оператора ))О, то это означает, что стоящие за НВМ ДО ЕЫХ) ПО ОПЕРаторы будут циклически повторяться либо до принудительное сетаноаки прОграмМЫ, Либо до специально предусмотренного выхода. В следующем примере программы цикл повторяется до тех пор, пока значение счетчика не достигнет 8-ми, затем происходит выход из цикла по аото: с догогечег.г Рвоаввм аогогечег >с=о ОО ивхте(*,20> в 15 ( >с .де.
в > аото 100 В = В+ 1 ЕИП РО 20 Ровмьт( ')с=', 15) 100 соитх>п)е ЕЫП РВООВЕМ С)ОХОГЕчЕГ Оператор 1МРЫС!Т ЙОЙЕ Применение оператора хмръхсхт моне запрещает автоматическое объявление переменных, и требует, чтобы каждая из них объявлялась явно с точным указанием сюего типа. Например, следующая программа автоматически определяет тип и Объявляет переменную счетчика цикла: РВОаиаи 1вр с)о 10 В 1,5 РВХыт *,>с 10 соыт1 Мое ЕМП РВОанаи хвр Добавление в начало программы оператора хмрпхСхт ноны требует, чтобы все переменные, которые используются после него, были явным образом объявлены до вх использованиея, включая также и счетчик цикла: Рвоаввм 1вр хмвьхсхт иоие хытеаев в с)о 10 В=1,5 РНХЫт,)с 150 Часть И.