pragma預處理命令

2021-06-23 00:57:39 字數 2174 閱讀 8759

#pragma可以說是c++中最複雜的預處理指令了,下面是最常用的幾個#pragma指令:

#pragma comment(lib,"***.lib")

表示鏈結***.lib這個庫,和在工程設定裡寫上***.lib的效果一樣。

#pragma comment(linker,"/entry:main_function")

表示指定鏈結器選項/entry:main_function

#pragma once

表示這個檔案只被包含一次

#pragma warning(disable:4705)

表示遮蔽警告4705

c和c++程式的每次執行都支援其所在的主機或作業系統所具有的一些獨特的特點。例如,有些程式需要精確控制資料存放的記憶體區域或控制某個函

數接收的引數。#pragma為編譯器提供了一種在不同機器和作業系統上編譯以保持c和c++完全相容的方法。#pragma是由機器和相關的作業系統定義

的,通常對每個編譯器來說是不同的。

如果編譯器遇到不認識的pragma指令,將給出警告資訊,然後繼續編譯。microsoft c and c++ 的編譯器可識別以下指令:alloc_text,

auto_inline,bss_seg,check_stack,code_seg,comment,component,conform,const_seg,data_seg,deprecated,

fenv_access,float_control,fp_contract,function,hdrstop,include_alias,init_seg,inline_depth,inline_recursion,intrinsic,

make_public,managed,message,omp,once,optimize,pack,pointers_to_members,pop_macro,push_macro,region,

endregion,runtime_checks,section,setlocale,strict_gs_check,unmanaged,vtordisp,warning。其中conform,init_seg,

pointers_to_members,vtordisp僅被c++編譯器支援。

以下是常用的pragma指令的詳細解釋。

1.#pragma once。保證所在檔案只會被包含一次,它是基於磁碟檔案的,而#ifndef則是基於巨集的。

2.#pragma warning。允許有選擇性的修改編譯器的警告訊息的行為。有如下用法:

#pragma warning(disable:4507 34; once:4385; error:164) 等價於:   

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

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

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

#pragma warning(default:176)     // 重置編譯器的176號警告行為到預設狀態 

同時這個pragma warning也支援如下格式,其中n代表乙個警告等級(1---4):             

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

#pragma warning(push,n) // 儲存所有警告資訊的現有的警告狀態,並設定全域性報警級別為n   

#pragma warning(pop)    //

例如: 

#pragma warning(push)   

#pragma warning(disable:4705)

#pragma warning(disable:4706)

#pragma warning(disable:4707)

#pragma warning(pop)          

在這段**後,恢復所有的警告資訊(包括4705,4706和4707)。

pragma 預處理命令

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

pragma預處理命令

巨集定義 define 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 不帶引數 格式 define 識別符號 字串其中識別符號就是所謂的符號常量,也稱為 巨集名 例 define pi 3.1415926 把程式中出現的pi全部換成3.1415926說明 帶引數格式 define 巨集名 參數列 字...

pragma 預處理指令

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