2015-12-24 24 views
1

我曾經在一些報頭中的使用編譯的被觀察。但真的不確定它的正確用法。幫助在這真的很讚賞預處理的#pragma用C相關和C++

#pragma once 
#pragma warning (disable : 4251) 
#pragma warning (pop) 
#pragma warning (push) 
#pragma comment(lib, "dbghelp") 
#pragma warn -ccc 
#pragma warn -aus 
#pragma warn -csu 
#pragma warn -spa 
pragma pack(push,8) 
__cplusplus 

在此先感謝。

+0

見一般用'#pragma' http://stackoverflow.com/questions/232785/use-of-pragma-in-c – Toby

+0

具體使用以下將取決於你的編譯器。對於海灣合作委員會的文件可在https://gcc.gnu.org/onlinedocs/cpp/Pragmas.html – Toby

+0

或者這裏MSVC:https://msdn.microsoft.com/en-us/library/d9x1s805.aspx – Toby

回答

-1

預處理器的#pragma基本上是用來改變是一種正常的C/C++程序的程序的執行順序從主開始()和從主出口(),但的#pragma允許被改變。

如下在#pragma被劃分: -

的#pragma啓動<函數名沒有括號>: -

改變啓動功能,這意味着這個函數將主要執行之前運行()

#include... 
void fun1(); 
void fun2(); 
#pragma startup fun1 
#pragma exit fun2 
int main() 
{ 
... 
} 

#pra沒有括號GMA出口<函數名>: -

改變出口函數,這意味着這個函數將主()

#include... 
void fun1(); 
void fun2(); 
#pragma startup fun1 
#pragma exit fun2 
int main() 
{ 
... 
} 

執行之後運行的#pragma警告<型的警告>: -

該指令告訴編譯器我們是否想要抑制一個特定的警告。

#include... 
    #pragma warn -rvl // return value 
    #pragma warn -par // parameter not used 
    #pragma warn -rch // unreachable code 

void fun(int n) 
    { 
    ... 
    //Do something 
    } 

int main() 
{ 
... 
// Do something 
fun(); // parameter not used warning suppressed. 
} 

還有許多其他的編譯指令,你可以很容易地只是做一個深入,在谷歌搜索正確的找到他們。

+0

如果你感到滿意,請投票並接受答案。 – NeoR

+0

這完全沒有回答這個問題!在OP問'的#pragma once','的#pragma warning','的#pragma comment','的#pragma warn'和'編譯pack',但你所描述的#pragma'startup','的#pragma exit'和'的#pragma warn' – Toby

+0

@Toby他只是詢問編譯並複製一個頭文件的內容「我在某些標題使用編譯的被觀察,但它真的不知道如何正確使用」 – NeoR