關於pragma命令的使用

2021-10-08 19:03:50 字數 2021 閱讀 8934

#include

intmain

(int argc ,

char

*ar**)

在codebloks編譯的結果為:

--

----

----

---- build: debug in define_undef (compiler: gnu gcc compiler)

----

----

-------

mingw32-gcc.exe -wall -g -c d:\desktop\codebloksfile\define_undef\main.c -o obj\debug\main.o

mingw32-g++

.exe -o bin\debug\define_undef.exe obj\debug\main.o

d:\desktop\codebloksfile\define_undef\main.c: in function 'main'

:d:\desktop\codebloksfile\define_undef\main.c:7:

13: note: #pragma message: hello c !

#pragma message("hello c !")

^output file is bin\debug\define_undef.exe with size 28.47 kb

process terminated with status 0(0

minute

(s),

0second

(s))

0error

(s),

0warning

(s)(

0minute

(s),

0second

(s))

所以,message 列印訊息出現在編譯的時候,不會出現在程式最終的執行結果中。

如果在標頭檔案的開頭部分加入這條指令,那麼就能保證標頭檔案只被編譯一次。 可以避免名字衝突,相較於#ifndef 來說相容性較差。

該指令表示編譯標頭檔案到此為止,後面的無需再編譯了。

int

main

(int argc,

char

*ar**)

stu1;

printf

(" str1 占用記憶體的大小為:%d 個位元組\n "

,sizeof

(stu1));

#pragma pack()

struct _stu2stu2;

printf

("str2 占用記憶體的大小為:%d 個位元組\n"

,sizeof

(stu2));

return0;

}

在結構體st1 的前面使用了#pragma pack(2),其作用是設定2 位元組對

齊,接下來使用了#pragma pack(),其作用是取消之前設定的位元組對齊方式,採用預設的4

位元組對齊。**執行結果為:

str1 占用記憶體的大小為:

36 個位元組

str2 占用記憶體的大小為:

40 個位元組

process returned 0

(0x0

) execution time :

0.045 s

press any key to continue

.

#pragma warning(disable :m n;once :h;error :k)

// 表示不顯示m 號和n 號的警告資訊,h 號警告資訊只報告一次,把k 號警告資訊作為乙個錯誤來處理。也可以將其分開來實現

//相當於:

#pragma warning(disable:m n)

#pragma warning(once:h)

#pragma warning(error:k)

pragma命令詳解

pragma命令的作用 是設定編譯器的狀態或者是指示編譯器完成一些特定的動作.格式 pragma 引數 1.pragma message 訊息文字 在編譯資訊輸出視窗中輸出相應的資訊,這對於源 資訊的控制是非常重要的。2.pragma code seg section name section cl...

pragma 預處理命令

在所有的預處理指令中,pragma 指令可能是最複雜的了,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma 指令對每個編譯器給出了乙個方法 在保持與c和 c 語言完全相容的情況下 給出主機或作業系統專有的特徵。依據定義 編譯指示是機器或作業系統專有的 且對於每個編譯器都是不...

pragma預處理命令

pragma可以說是c 中最複雜的預處理指令了,下面是最常用的幾個 pragma指令 pragma comment lib,lib 表示鏈結 lib這個庫,和在工程設定裡寫上 lib的效果一樣。pragma comment linker,entry main function 表示指定鏈結器選項 e...