Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Опции управления диалектом языка Си

-ansi (--ansi)

Эта опция обеспечивает поддержку стандарта ANSI для языка Си.

При компиляции с опцией -ansiнедоступны некоторые возможности компилятора, не совместимые с ANSI Си, в частности ключевые словаasm,inline,typeof, и некоторые предопределенные макросы, например unix или vax, идентифицирующие тип используемой системы. С этой опцией доступно использование "триграфов" (trigraph), а включение знака "$" в идентификаторы не разрешается.

ПРИМЕЧАНИЕ. При компиляции для целевой платформы(ЭВМ“Багет-23В”под управлением ОС РВ Багет) опцию-ansiнеобходимо употреблять в сочетании с предопределением макроса CPU:-DCPU=R3000.

Опция -ansiне запрещает использования альтернативных ключевых слов__asm__, __extension__, __inline__ и__typeof__, а также макросов__unix__и__vax__. Их реальное использование в программе, компилируемой с опцией-ansi, видимо, не имеет смысла, но желательно иметь возможность употреблять их в заголовочных файлах, включаемых в такие программы.

Опция -ansiне означает, что программа, не удовлетворяющая стандарту ANSI, будет отвергнута. Для этого, в дополнение к-ansi, следует применить опцию-pedantic.

При препроцессировании программ с опцией -ansi вводится предопределение макроса __STRICT_ANSI__.Некоторые заголовочные файлы могут распознавать его и, соответственно, воздерживаться от декларирования функций или описания макросов, не употребляемых в ANSI Си. За счет этого можно избежать конфликтов с программами, где эти имена используются в других целях.

Функции alloca, abort, exit, _exit, ffsне являются встроенными функциями, если используется опция-ansi.

-fno-asm (--no-asm)

Не распознавать в качестве ключевых слов asm, inline, typeof. Разрешить их использование в качестве обычных идентификаторов. Вместо этих слов можно употреблять, соответственно,__asm__, __inline__, __typeof__. Наличие опции-ansiпредполагает-fno-asm.

-fno-builtin(--no-builtin)

Не распознавать встроенных функций, имена которых не начинаются с двух подчеркиваний. Эта опция затрагивает употребление имен abort, abs, alloca, cos, exit, fabs, ffs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy, strlen.

Для многих встроенных функций компилятор генерирует код, обеспечивающий более эффективную их обработку. Например, обращение к allocaможет быть скомпилировано непосредственно в команду продвижения стека, а обращение кmemcpy— в цикл копирования. Результирующий код зачастую оказывается и короче, и быстрее, но, поскольку явный вызов функции в нем отсутствует, на него нельзя поставить точку прерывания при отладке; нельзя также изменить поведение программы, подключив другую библиотеку стандартных функций.

-trigraphs (--trigraphs)

Поддержка триграфов ANSI Си. Опция, включаемая по умолчанию, если задана опция -ansi.

-traditional (--traditional)

Опция, обеспечивающая поддержку некоторых аспектов традиционного Си (т.е. языка Си, описанного Керниганом и Ричи). Нельзя компилировать с ней программы, использующие заголовочные файлы, которые полагаются на соблюдение требований стандарта ANSI.

-traditional-cpp(--traditional-cpp)

Опция, обеспечивающая поддержку некоторых аспектов традиционных препроцессоров Си.

-fcond-mismatch (--cond-mismatch)

Разрешает условные выражения с несовпадающими типами второго и третьего аргументов. Значение такого выражения пусто.

-funsigned-char (--unsigned-char)

Рассматривать тип charкак беззнаковый (unsigned char).

Для каждого типа машины определено умолчание для типа char. Согласно этому умолчанию char интерпретируется либо какsigned char, либо какunsigned char. Для рассматриваемой целевой платформы по умолчанию типcharэквивалентенsigned char.

В идеале при написании переносимой программы всегда следует явно задавать "знаковость" для переменных типа char, т.е. употреблять типыunsignedcharилиsignedchar. Однако исторически во многих программах использовался описательcharв расчете на интерпретацию, принятую для той машины, для которой создавалась программа. Данная опция (и обратная опция-fsigned-char) обеспечивает правильную работу таких программ на машинах, где принято противоположное умолчание.

Тип charвсегда считается отличным от типовsigned charиunsigned char, хотя его интерпретация всегда совпадает с интерпретацией одного их этих двух типов.

-fsigned-char(--signed-char)

Рассматривать тип charкак знаковый (signed char).

Заметим, что эта опция эквивалентна -fno-unsigned-char(или--no-unsigned-char). Эквивалентными также являются опции -fno-signed-charи-funsigned-char.

-fsigned-bitfields (--signed-bitfields)

-funsigned-bitfields(--unsigned-bitfields)

-fno-signed-bitfields (--no-signed-bitfields)

-fno-unsigned-bitfields (--no-unsigned-bitfields)

Эти опции определяют "знаковость" битовых полей, декларации которых не содержат спецификаций signed илиunsigned. По умолчанию битовые поля считаются знаковыми, что согласуется с интерпретацией типаint, который по умолчанию рассматривается как знаковый.

-fwritable-strings (--writable-strings)

Опция, разрешающая производить запись в область памяти, где хранится текстовая константа. Использовать эту возможность не рекомендуется.

-fallow-single-precision (--allow-single-precision)

Даже при компиляции с опцией -traditional не выполнять с двойной точностью математические операции над значениями одинарной точности.

Соседние файлы в папке Еще материалы