#pragma用法

來源:互聯網
上載者:User

標籤:

#pragma是一種預先處理指令,作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。

其格式一般為:#pragma Para。其中Para為參數。下面是一些常見用法。

1、message

——在編譯資訊輸出視窗中輸出相應資訊。

例:#ifdef _X86

#pragma message("_X86 macro activated!")

#endif

2、once

——保證標頭檔只被編譯一次

#pragma once與#ifndef / #define / endif 區別:

1)#pragma once與編譯相關,移植性差,不過現在基本上每個編譯器都有這個定義;

2)#pragma once如果標頭檔有多份拷貝,不能保證它們不被重複包含;

3)#ifndef / #define / endif 是C++語言相關,所有支援C++語言的編譯器都有效,移植性好;

4)#ifndef / #define / endif 通過宏定義避免檔案多次編譯,這不僅保證同一檔案不會被包含多次,也能保證內容完全相同的兩個檔案不會被不小心同時包含。

3、warning

——修改編譯器的警告訊息的行為

#pragma warning(push)--儲存所有警示資訊的現有警示狀態

#pragma warning(disable:4507 34)--不顯示4507和34號警告資訊

#pragma warning(once:4835)--4835號警告資訊僅報告一次

#pragma warning(error:164)--把164號警告資訊作為一個錯誤

#pragma warning(disable:4507 34; once:4835; error:164)--綜上

#pragma warning(pop)--向棧中彈出最後一個警示資訊,在入棧和出棧間所作的一切改動取消

4、comment

——將一個注釋記錄放入一個對象檔案或可執行檔中

指令格式:#pragma comment(comment-type [, "comment-string"])

comment-type是一個預定義標識符,指定注釋類型,是compiler、exestr、lib、linker之一;

comment-string是一個為comment-type提供附加資訊的字串。

最常用的是:#pragma comment(lib, "*.lib")--連結指定庫

 

5、pack

——設定位元組對齊長度

實際使用規則:結構、聯合或類的資料成員,第一個放在位移為0的地方,以後每個資料成員的對齊,按照#pragma pack指定的數值和這個資料成員自身長度中,比較大的那個進行。但是當前者設定的值等於或超過最長資料成員的長度時,這個值的大小將不產生任何效果。而 結構整體的對齊,則按照結構體中最大的資料成員和#pragma pack指定值之間較小的那個進行。

#pragma pack(show)--以警告資訊的形式顯示當前位元組對齊的值

#pragma pack(push)--將當前位元組對齊值壓入編譯棧棧頂

#pragma pack(n)--將當前位元組對齊值設為n

#pragma pack(push, n)--綜上兩句

#pragma pack(pop)--將編譯棧棧頂的位元組對齊值彈出並設為當前值

#pragma pack()--將當前位元組對齊值設為預設值(通常是8)


#pragma用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.