Главная » Просмотр файлов » GCC - The Complete Reference

GCC - The Complete Reference (537669), страница 16

Файл №537669 GCC - The Complete Reference (GCC - The Complete Reference) 16 страницаGCC - The Complete Reference (537669) страница 162015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 16)

В точности, какие из них определены, и какие они содержат значения, зависит от языка компиляции, назначаемых опций командной строки, используемой "домашнеи" платформы, преднаначаемой целевой платформы, версии запускаемого компилятора и установленных переменных окружения. Можете использовать опцию препроцессора -г)м, чтобы увидеть весь их список. Подаваемая для этого команда должна выглядеть примерно так; срр -Е -дн шургод.с ! ноге ! шоге Таблица 3.2. Основной набор предопределенных макросов )( иввроо Строка е кавычках, содержащая полный путь к каталогу, где находится исходный файл, назначенный командной строкой (не обязательно файл, в котором используется макрос).

См. также ргьн Взвв ВХЬН Макрос назначаемый, чтобы показывать что символьный тип, действущий на целевой машине, является беззнаковым. Он используется в 11ш1кв.н для определения значений СНВН НХН И СНАН НАХ. снва онвханно Определяется топько тогда, когда исходный код ЯвляЕтея программой нв языке С++, Он определен квк "1", если компилятор не вполне соответствует полному набору правил стандарта; в противном случае определяется месяцем и годом выпуска стандарта так же, как вттю уннвхон для языка С.

ср1ивр1из Заключенная в кавычки строка из 11 символов, содержащая календарную дату, когда программа была сксмпилирована. Имеет такой формат: "шву 3 2002" рзтн Список, выводимый по этой команде, содержит директивы «бегзце ДЛя КаждО- го макроса, определенного препроцессором после обработки указанного исходного файла и всех включаемых им заголовочных файлов. Таблица 3.2 содержит список макросов, почти всегда определяемых, и описание каждого из них. 72 Часть И.

Использование Сборного Компилятора Имв маэ)эвва Хиос РОНСРХОН енес омсс мхнов ОНВС РАТСНЬЕУЕЬ хнсьвве ьеуеь ьхне НО ХНЬХНЕ овос ОРРХМХЕЕ ОРТХМХ2Е ВХ2Е ЕЕОХВТЕЕ РВЕРХЕ вовс втвс новтев втвс уеетхон Строка в кавычках, содержащая имя исходного файла, в котором применен макрос. См, также авве Рхье то же, что и Рвнстхон Строка в кавычках, содержащая имя текущей функции. Макрос, всегда определяемый как старший номер версии компилятора. Например, если номер версии компилятора 3.!.2, то этот макрос определяется значением "3". Макрос, всегда определяемый как младший номер версии компилятора (т.е.

номер выпуска). Например, если номер версии компилятора 3.!.2, то этот макрос определяется значением "1". Макрос, всегда определяемый как номер редакции выпуска компилятора. Например, если полный номер версии компилятора 3.! .2, то этот макрос определяется значением "2". Определяется при использовании компилятора С++. Этот макрос определяется в любом случае, независимо от того, что ср1овр1ов и омсс также определены. Целочисленное значение, показывающее текущую глубину включаемого ((пс(обе) файла. для основного (назначенного в командной строке) файла равно "0", и увеличивается на единицу внутри каждого следующего файла, включаемого в предыдущий файл имеющейся в нем директивой в1пс1оее.

Номер строки файла, в котором используе~се макрос. Определяется как "1" в любом случае отсутствия (п((пе- функций, которые должны подстанавливаться кодом их определения, как из-за отсутствия оптимизации, так и в силу намеренной блокировки воэможности подстановки кода таких функций. Определяется как "1" в случае, если код компилируется как пРогРамма на язЫке ОЬ!вс(ве-С.

Макрос определен как "1", если назначен любой уровень оптимизации. Макрос определен зачением "1", когда назначена оптимизация размера программы за счет быстродействия. Этот макрос — не строка, а указатель ((океп). Он указывает префикс для зарегистрированных программ. Может применяться для написания ассемблерного кода, переносимого на различные варианты окружения. Определяемый как -1", показывает, что компилятор соответствует правилам стандарта языка С. Макрос не определяется при компиляции программ на языках С++ и ОЬ)ес(фе-С, и когда назначена опция -ьвво1ь1олв1. Определяется как "1" в "дружественном" (Поз(ео) окружении (таком окружении, в котором доступны все стандартные библиотеки функций языка С) Значение типа Хоев 1лэееек, определяющее версию стандарта в форме года и месяца его выпуска.

Например, версия стандарта 1999 года будет представлена значением "199901ь", Этот макрос не определяется при компиляции программ на языках С++ и ОЬ)вовке-С, и когда назначена ОПЦИЯ -Эхао1Э1спв1. Глава 3. Препроцессор срр 73 Оимсвммв Определяется только тогда, когда в командной строке назначена хотя бы одна из опций -еовт и -все. Используется в заголовочных файлах (Пеапег Мез) ОНО для ограничения применяемых определений условиями стандарта.

Строка в кавычках из восьми символов, содержащая время компиляции программы в формате "10: 10: зе". Этот макрос — не строка, а указатель ((охеп). Он указывает префикс перед символическими именами в ассемблерном коде. Указатель меняется в зависимости от платформы, но обычно ссылается на символ подчеркивания " ". Определяется как "1", если механизм обработки исключений установлен зжр и 1ооязир. Полный номер версии.

Дпя атой информации нет особого формата представления, однако она содержит по крайней мере старший номер версии и номер выпуска. втехст янах ттие овее ьзлеь РаеРтх овхио воьо ехсеРР1омв РЕВВХОИ Таблица 3.3 содержит подборку ключевых языка С++, заменяющих имена операторов, обычно набираемых символами пунктуации. Они воспринимаются препроцессором так же, как если бы они были макросами, определенными с помощью директив йгзей1пе. Если вас интересуют их определения, то подобные им макросы для С и 0(уесггуе-С определяются в заголовочном файле Ьво6 4 6.)т. Таблица 3.3. Именная форма логических опе второе в языке С++ Лмв виврвтдрв Зямммвввмтивм вму 4кврив а ириивмвмиви вмвевв иуммтувммм аяа еч шкапе Ысох соиР1 яок еа хох ео Включение заголовочного файла единственный раз В связи с тем, что одни заголовочные файлы включают другие, может оказаться что вы обзавелись программой, которая включает один и тот же заголовок более одного раза.

Это может приводи~ь к появлению сообщений об ошибках, связанных с тем, что уже определенные элементы кода будут определяться снова. Для предотвращения подобных приключений заголовочный файл должен иметь особый код, который "отлавливает" такую ситуацию, определяет, не вставлялся ли уже текущий обрабатываемый файл. 74 Часть!!.

Использование Сборного Компилятора /* шуцеасет.ц «/ Взяпсеа МТНЕАРЕЕ Н Все11пе МУНЕАПЕЕ Н /" Тело эаголавочлогс Файла */ Вепря /* МУНЕАПЕЕ Н */ В этом примере, заголовочный файл называется шуЬеабег. )ь Первая строка проверяет, определялся ли ранее макрос МТНЕА))ЕЕ Н. Если так, то собственно условный код тела заголовочного файла пропускается препроцессором. Этот прием применяется во всех системных заголовочных файлах. Все определяемые в них имена начинаются знаком подчеркивания, чтобы они не конфликтовали с именами, которые назначаются пользователями. Соглашение, действующее на имена„определяемые для предотвращения повторного включения, состоит в том, это имя должно состоять из прописных букв н содержать в себе имя файла.

Препроцессор б)ЧП распознает эти конструкции и ведет список заголовочных файлов, которые их применяют. Таким способом он оптимизирует обработку кода заголовочных файлов, распознавая имена файлов, и даже не читает файлы, когда они уже включены в программу. Включение информации о расположении кода в сообщения об ошибках Предопределенные макросы могут использоваться для автоматизации построения сообщений об ошибках, которые содержат подробную информацию о расположении и типе найденной ошибки. Предопределенные макросы е1ье Ь1МЕ и Екпс содержат необходимую информацию, но они должны быть применены в том месте, где создается сообщение. Следовательно, если вы напишете функцию, которая содержит все эти макросы, то сообщение будет выдано с указанием имени функции, файла и номера строки.

Прекрасным решением этой задачи будет определение макроса, который содержит все эти предопределения. Таким образом, после того, как препроцессор произведет подстановку для этих макросов, все они займут соответствующие им места, и будут содержать точную информацию. Далее следует пример макроса, выдающего сообщение в случае стандартной ошибки; Ваев1пе швд(вес) Ерв1псв(вссегс,«РЬ1е: Ъв Ьвпе: «ва Ропсс1оп: ««вХп««вХп", Р1ХЕ , ЬХМЕ , йппс ,все)г Для вызова этого макроса из любого места кода, нужно только определить строку описывающую ошибку: швд(«тиеге 1в ап егсог 'песе.«); Другое преимущество такого способа состоит в том, что ваш метод обработки ошибочных условий может быть изменен простым изменением макроса.

Характеристики

Тип файла
DJVU-файл
Размер
6,08 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6312
Авторов
на СтудИзбе
312
Средний доход
с одного платного файла
Обучение Подробнее