Для чего программа прагма

При помощи директивы #pragma язык C++ позволяет определить любые желаемые директивы, не обращаясь для этого к другим, поддерживающим их компиляторам. Если компилятор не поддерживает данное имя директивы, то он просто игнорирует директиву #pragma, не выдавая при этом никаких сообщений об ошибках или предупреждений.

Язык C++ поддерживает следующие директивы #pragma:

#pragma alignment

#pragma link

#pragma argsused

#pragma message

#pragma checkoption

#pragma obsolete

#pragma codeseg

#pragma option

#pragma comment

#pragma pack

#pragma exit

#pragma package

#pragma hdrfile

#pragma resource

#ragma hdrstop

#pragma saveregs

#pragma inline

#pragma startup

#pragma warn

#pragma once

Директива #pragma alignment выдает сообщение о текущем выравнивании данных и размере enum-типов.

Директива #pragma argsused допустима только между определениями функций и действует только на следующую функцию. Она отменяет сообщение уровня предупреждения «Parameter name is never used in function имя-функции» – («имя параметра нигде не используется в функции имя-функции»).

QTranslate — удобный Переводчик Любого текста на экране

Директива #pragma checkoption проверяет, установлены ли опции, указанные в директиве. Если они не установлены, выдается сообщение об ошибке. Синтаксис директивы #pragma checkoption следующий:

#pragma checkoption строка_ опций

Директива #pragma codeseg позволяет указать имя или класс сегмента либо группу, где будут размещаться функции. Если все опции директивы опущены, используется сегмент кода по умолчанию. Синтаксис директивы следующий:

#pragma codeseg [имя_сегмента] [«класс»] [группа]

Директива #pragma comment записывает строку-комментарий в объектный или исполняемый файл. Синтаксис директивы следующий:

#pragma comment (тип, «строка»)

Директивы #pragma exit и #pagma startup позволяют программе задать функцию (функции), которая должна вызываться либо при загрузке программы (перед вызовом main), либо при выходе из программы (непосредственно перед выходом из программы через _exit). Синтаксис этих директив следующий:

Читайте также:
Что за программа артерии

#pragma exit имя-функции

#pragma startup имя-функции

Параметр должен являться целым числом в диапазоне от 64 до 255. Старшим приоритетом является 0 (приоритеты от 0 до 63 используются библиотеками языка С/С++ и не должны использоваться пользователем). Функции со старшими приоритетами вызываются первыми при загрузке программы и последними при выходе из нее. Если приоритет не задан, то по умолчанию он равен 100.

void startFunc(void)

В результате работы программы на экране появится:

In start
In main

Как показывает данный пример, необходимо предоставить прототип функции до использования директивы #pragma.

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

Где брать программы для ПК? Чистый, бecплaтный и простой, набор программ для вашего компьютера!

#pragma hdrfile «имя_файла. csm»

где имя_файла — это имя файла (с расширением csm).

Директива hdrstop сообщает Borland С++ о необходимости остановить предкомпиляцию заго­ловочных файлов.

Также имеется директива inline, имеющая следующий вид:

Она сообщает компилятору, что программа содержит внутренний ассемблерный код. При создании самого быстрого кода компилятор должен знать, что в программе содержится ассемблерный код.

Используя директиву intrinsic, можно указать компилятору на необходимость подстановки кода функции вместо ее вызова. Директива имеет вид:

#pragma intrinsic имя_функции

где имя_функции — это имя функции, которую необходимо сделать внутренней.

Если выбрать опцию Inline Intrinsic Function в ИСР (интегрированной среде разработчика) или воспользоваться опцией -Oi при компиляции с помощью строчного компилятора, то Borland ав­томатически сделает внутренними следующие функции:

alloca memcpy stpcpy strcpy strncpy
fabs memset strcat strlen strnset
memchr rotl strchr strncat strrchr
memcmp rotr strcmp strncmp

Воспользовавшись директивой intrinsic, можно отменить функции, которые станут внутренними: #pragma intrinsic имя_функции

Читайте также:
Что за программа my desktop

Директива message позволяет определить сообщение, выводимое в качестве предупреждения при компиляции программы. Например:

#include
#pragma message This will be displayed as a warning.
int main(void)
int i=10;
printf («This is i: %dn», i);
#pragma message This is also displayed as a warning.
return 0;
>

При компиляции появятся два сообщения #pragma, выводящиеся в качестве предупреждений. При использовании ИСР они появятся в стандартном окне сообщений.

Директива option позволяет определить опции командной строки вместо того, чтобы данные опции явно указывать в командной строке. Она имеет следующий вид:

#pragma option список_опций

Например, следующая директива приводит к тому, что содержащая ее программа будет компи­лироваться в модели large:

#pragma option -ml

Следующие опции не могут использоваться с директивой option:

-В -с -D -е -Е -F -h
-l -М -о -Р -Q -S -Т
-U -V -X -Y

Для использования некоторых опций директива option должна стоять перед любыми объявления­ми, включая прототипы функций. Поэтому имеет смысл помещать данную директиву самой первой.

Директива saveregs запрещает функции, объявленной как huge, изменять какие-либо регистры. Данная директива должна стоять перед функцией, и она влияет только на функцию, перед кото­рой стоит.

Директива warn позволяет запретить или разрешить различные предупреждения. Она имеет вид:

#pragma warn установки

где установки — это опции для определения предупреждений.

Источник: www.c-cpp.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru