Pragma, програмиране в С и С

директива #pragma е стандарт, определен от ANSI C за прилагане на директивите, дай-ING компилатора различни инструкции. Стандартен изглед #pragma следното:







когато наименованието - директивата за име #pragma. Borland определя 14 директиви #pragma:

argused
anon_struct
codeseg
коментар
изход
hdrfile
hdrstop
инлайн
присъщ
съобщение
опция
saveregs
стартиране
предупреждавам

Директива argused трябва да застане в предната част на функция. Той се използва за отстраняване на ПРЕДУПРЕЖДЕНИЕ-ции, ако аргумент на функцията се предшества от #pragma, не се използва в тялото на функция.

За да се позволи използването на анонимни структури посочи директива anon_struct. С директиви Pomo-schyu codeseg можете да определите сегмент, клас или група използва функция.

Директивата определя изхода на една или повече функции, за да се нарече в края на програми, ние сме. стартиране директива определя една или повече функции, наречени когато про-гр план. Те са, както следва:

#pragma приоритет излизане function_name

#pragma стартиране приоритет function_name

Приоритет - тази стойност 64-255 (стойности от 0 до 63 са запазени). Приоритет определя реда на извиквания на функции. Ако не е посочен приоритет, по подразбиране се приема, Xia 100. Всички функции, изпълнявани в началото или в края на програмата, трябва Ad-lyatsya следва:
невалидни е (свободен);

Следващият пример определя началото на функцията (), който се изпълнява в началото на програмата.

#include
нищожен старт (недействителни);
#pragma стартиране започне 65
вътр главния (свободен)
ФОРМАТ ( "В основния \ п");
връщане 0;
>
нищожен старт (свободен)
ФОРМАТ ( "В начало \ Н");
>

В резултат на програмата се появява на екрана:

В начало
В основния

Тъй като този пример показва, че е необходимо да се осигури функцията прототип за използване #pragma директива.







С hdrfile директиви могат да посочат името на файла се използва за съхранение на предварително съставен заглавки. Той има формата

#pragma hdrfile "името на файла. КСМ"

където името на файла - име на файл (с разширение CSM).

Директива hdrstop съобщава Borland C ++ за необходимостта да се спре предкомпилирането Zago-lovochnyh файлове.

Също така има вграден директива, която има следния вид:

В него се разказва компилаторът, че програмата има вътрешен асемблер код. При създаването на най-бързия код, компилаторът трябва да знае, че програмата съдържа асемблер код.

Използването на вътрешна директива, можете да укажете на компилатора да код функция смяна вместо да й се обади. Директивата има формата:

#pragma присъща function_name

където funcname - името на тази функция, която е необходимо да се направи от вътрешната страна.

Ако изберете Inline Присъщи Функция в ISR (комплексно разработчик среда), или използвайте опцията -Oi когато съставен с помощта на съставителя на линия, Borland-AW-автоматична направят вътрешни следните функции:

alloca memcpy stpcpy strcpy strncpy
фабрики memset strcat strlen strnset
memchr rotl strchr strncat strrchr
memcmp rotr strcmp strncmp

Използването на вътрешна директива, можете да отмените функцията, която ще бъде вътрешен: #pragma присъща function_name

директива съобщение ви дава възможност да се определи посланието да се показва като предупреждение при съставянето на програмата. Например:

#include
#pragma съобщение Това ще се покаже като предупреждение.
вътр главния (свободен)
INT I = 10;
ФОРМАТ ( "Това е аз. \ Н", и);
#pragma съобщение Това се показва и като предупреждение.
връщане 0;
>

ще има две съобщения #pragma, да бъдат изведени като предупреждение при съставянето. При използване на IDE те ще се появят в стандартен прозорец съобщения.

В Директива опция ви позволява да зададете опция за команден ред, а не от тези опции ясно посочват от командния ред. Това е, както следва:

#pragma опция spisok_optsy

Например, следните директива води до факта, че тя съдържа програмата ще бъде Comp изолиран модел голям:

#pragma опция -ml

Следните опции не могат да се използват с опцията за директива:

-Най-C-E -D -Е -F -h
-л -М -о -Р -Q -T -S
-U-V -X-Y

Директива saveregs забранява функцията обявен за Огромни, промените някоя от регистрите. Настоящата директива следва да застане пред функция, а това се отразява само на функцията преди кото-изобилие заслужава.

предупреди Директива разрешите или забраните различни предупреждения. Той има следния вид:

#pragma предупреди инсталация

когато инсталацията - това е възможност за дефиниране сигнали.