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

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

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

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

Внутри имени файла не подстанавливаются ни имена макросов, ни символы, имеющие специальное значение. Если в директиве указанное имя содержит "ю' (" звездочку" ) или обратную косую черту "~", то файл будет найден только в том случае, если его имя содержит именно эти символы. Директива №йе11пе может быть использована для указания имени включаемого заголовочного файла, как в следующем примере: №йетьпе воднвдпен "вод З.Н" №1пс1пйе воаннлпнв Если в строке, которая содержит директиву $1пс1ийе, содержится хоть чтонибудь, кроме комментария, то это воспринимается как ошибка.

Директива $11пе не может изменить текущий каталог в целях поиска файлов. 68 Часть й. Использование Сборного Компилятора ° Опция -1- может применяться для указания, как именно действуют опции -1, определяющие каталоги для поиска файлов. Подробные сведения об этом содержатся в приложении 4. №1пс!оде пех1 Директива Мпо1ибе цехе применяется только в особых случаях. Она используется внутри заголовочного файла, включаемого в другой файл, и вызывает поиск нового файла.

Этот поиск начинается с каталога, следующего за тем, где был найден текущий файл. Например, действуют такие условия поиска, при котором каталоги просматриваются в таком порядке: д, в, с, (), ц. Допустим, текущий файл был найден в каталоге в. Директива $1по1обе цехе в текущем файле вызовет поиск заголовочного файла с новым именем в каталоге с, потом в и, и затем в ц. Эта директива может применяться для добавления или модификации определений в системных заголовочных файлах без изменения самих файлов.

Например, системный заголовочный файл ивх/1по1ибе/веЖо. Ь содержит определение функции дево, которая считывает один символ нз входного потока. Чтобы заменить эту функцию "болваном", который всегда возвращает один и тот же символ, и прн этом оставить все остальное хозяйство стандартного заголовочного файла как есть, вы можете создать собственную версию файла всо1о. )х, который будет содержать следующий код: ()ьпс1ипе хехЕ "вЕЫо.ц" ()авдее деее ()ОехХпе десс(ЕР) ((зпв)'х') Использование этого заголовочного файла вызовет вставку стандартного файла веЖо. Ь и переназначение макроса деес. №11пе Программы-отладчики (((еЬцййега) нуждаются в том, чтобы связывать имена файлов и номера строк исходников с элементами данных и исполняемым кодом программы. Поэтому препроцессор помещает эту информацию в вывод, передаваемый компилятору.

Необходимо трассировать (т.е. построчно выполнять) каждый исходный файл, в то время как препроцессор создает один файл из нескольких. Компилятор использует эти данные для построения таблиц„помещаемых в объектный код. В обычной ситуации позволить препроцессору определять номера строк простым подсчетом — это как раз то, что нужно сделать. Однако, бывает и так, что некоторые другие обработчики вызывают отключение передачи этой информации. Например, общепринятый метод передачи БЯ1.-запросов заключается в том, чтобы записать запрос в виде макроса, который затем преобразовывается специальным обработчиком в вызовы В( й.-фунций более низкого уровня. Это может расширить код, передаваемый компилятору на несколько строк и привести к тому, что счет строк изменится.

Обработчик ВО( может поправить это, помещая директивы $11пе в свой вывод таким образом, чтобы препоцессор вел подсчет строк, ориентированный на первичный исходный код. Глава 3. Препроцессор срр 69 На директивы $11пе действуют следующие правила и условия: ° При определении директивы $11пе с числом препроцессор заменяет свой текущий счет строк заданным числом. В этом примере номер текущей строки устанавливается на 137: №11пе 137 ° Определение директивы $11пе с числом и именем файла указывает препроцессору изменить как счет строк, так и имя текущего файла.

Например, следуюшая директива изменяет текущую позицию на первую строку файла видд1ев.Ь: №11пе 1 "впдд1ев.Ь" ° Директива $11пе изменяет значение предопределенных макросов ЫЕЕ У1ЬЕ ° Директива $11пе не влияет на имена файлов или каталогов, используемые директивой $1пс1ийе. Директивы Фргаупа и оператор Ргадта Директива №ргадзва предоставляет стандартный метод передачи информации, которая может быть специфичной для компилятора. В соответствии со стандартом компилятор может присоединять любое сообщение, имеющее лля него значение, к директиве №ргадва. В ОСС лрагиы (прагма-директивы) определяются как два слова.

Первое из них "ССС", второе — имя особой прагмы. ФРГаУПа бСС дЕРЕПЙЕПСУ прагма зависимости йерепйепсу проверяет отметку времени В)тезгатр) текущего файла и сравнивает его с отметкой времени другого файла. Если другой файл оказывается более новым, выдается предупреждение. Следуюший пример прагмы сравнивает отметку времени текущего файла с отметкой времени файла с именем 1ехдеп.сЬ1: №ргадаа 0СС йерепйепсу "1ехдеп.ЕЬ1" В случае, если файл 1ехдеп. СЬ1 новее, чем текущий файл, препроцессор выдает следующее сообщение: иагп1пд: сиггепе г11е 1в о1йег ЕЬап "1ехдеп.ЕЬ1" В директиву ргадзва может добавляться другой текст.

Он будет включен как часть предупредительного сообщения, как в следующем примере: №ргадаа дсс йерепйепсу "1ехдеп.еь1" иеайег 1ех.ь пееейв ео ье ирйаеей Эта директива может порождать выдачу следуюших сообщений: евон.с:26: иагп1пд: спггепс г11е 1в о1йег ЕЬап "1ехдеп.ЕЬ1" вьое.с ° 2Б: еагп1пд: неайег 1ех.Ь пееейв ео Ье ирйаеей 70 Часть П. Использование Сборного Компилятора Фргаягпа бСС ро((акоп "Испорченная" прагма (ро1зоп ргаягпа) может применяться для того, чтобы при любом использовании указанного имени выдавалось предупреждение.

Вы можете этим воспользоваться, чтобы иметь гарантию, что определенная функция не будет вызываться. Следующая прагма выдает предупреждение при любом вызове функций копирования памяти (щещоту-(о-гпепюгу сору Гппс(юпз): Вргвяпе ОСС роьвоп пеперу тевввоте вепсру(сагяес, вопгее, в).ве)г Этот код вызовет следующее предупредительное сообщение: вдов.е:Заюяю аееепрс Ео пве родвопеа 'чвешеру" Фргаягпа бСС Вубте(п пеадег Код, стоя(ций после директивы прагмы вувсев( )теабег до конца файла, считается кодом системного заголовочного файла.

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

Это делает возможным использование кавычеклля создания прагмызависимости; Ргеяпа( чяСС аерепаепеу ~"1егдеп.СЬЗ~""] Фяпде1 Директива Мопс(ей используется лля удаления макроопределения, ранее созданного директивой йбесгпе. Это может применяться, когда макроопределение более не нужно, нли его нужно переопределить другим значением. Директива конкатенации (объединения) "йй" используется внутри макроса для объединения значений, содержащихся в двух лексемах исходного кода (зоцгсе со()е (ойепз), в одну строку. Она может использоваться для сборки имен, которые иначе Глава 3. Препроцессор срр 7 1 могут быть неправильно истолкованы программой синтаксического разбора (парсе- ром). В примере два макроса выполняют конкатенацию: «бе«1пе РАНТЕ1(е)««)тонне «бееьпе РАНТЕ2(а,)т) а««Ь гевпзс = Рлнтнз(те*ш)) гевп1Е = РАЛТЕ1(гапс)т]т гевпьс = Рдлтня(аг е,ъ с)с)т После препроцессора получим следующий код: гевпзе = вагш)тонне) гевп1Е = гвпсллопве) гевп1Е = ггопСЬес)гт Предопределенные макросы Компилятор бСС предопределяет довольно много макросов.

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

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

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

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