請問有關指令的問題 |
答題得分者是:larryleu
|
cang
一般會員 發表:2 回覆:0 積分:0 註冊:2004-12-20 發送簡訊給我 |
|
larryleu
初階會員 發表:39 回覆:67 積分:38 註冊:2002-06-19 發送簡訊給我 |
pragma (Visual C++)
pragma是一個可用來動態調整編譯器編譯選項的指令(directive),依據編譯器而定,不同的編譯器會有所出入
作者介紹一些常用的,先列在此處
(1)#pragma comment( lib, "lib_name.lib" )
=>指定目前程式所使用的library
(2)#pragma once
=>在編譯時,只編譯一次
(3)#pragma warning( disable : xxxx )
=>編譯時,將編號xxxx的警告關掉
(4)#pragma warning( once : xxxx)
=>xxxx號警告僅報告一次
(5)#pragma warning( error : xxxx)
=>視xxxx號警告為一個錯誤
(6)#pragma message("Compile_Message")
=>編譯時,在編譯輸出框架(Output pane)中加入Compile_Message文字
(7)#pragma pack( show | [n] )
=>指定struct、union及類別成員的alignment
現在開始一一仔細介紹
(1)#pragma comment( lib, "lib_name.lib" )
當你使用一個非編譯器提供的library時,需要讓知道這個library的路徑與指定這個library給編譯器
在告訴編譯器目前library的路徑之後(Tools / Options... / Directories / Show directories for: ->Library files)
雖然已經告訴編譯器目前library這個檔案的路徑,但還需要一個動作
就是指定目前程式所使用的library,有兩個方法
Ⅰ#pragma comment(lib,"lib_name.lib")
Ⅱ選擇Project->settings->link ->object/library modules 裡加入所指定或所需要的library
(2)#pragma once
一般在標題檔中加入,目的是在編譯時只編譯此檔案一次 -------------------------------------------------------------------------------- //header.h
#pragma once
// Your C or C++ code would follow: -------------------------------------------------------------------------------- 那與下列這樣的方式有什麼不同呢?
-------------------------------------------------------------------------------- //header.h
#ifndef HEADER_NAME_H_
#define HEADER_NAME_H_
// Your C or C++ code would follow:
#endif -------------------------------------------------------------------------------- #pragma與#ifndef,#define,#endif都是preprocessing directives
在ISO/IEC 14882:1998(E)中第16章中有介紹,其中#pragma並沒有制定出一個共通的標準與使用格式
因為在每個編譯器中所制定出的#pragma格式可能不同,所以#pragma相對於#ifndef來說缺乏可攜式。
但如果只在VC的環境下寫程式時就不需要擔心了!
如果考慮到Portability的問題時,建議使用#ifndef,#define,#endif,否則使用那一個都沒有差別。
若對於Portability有興趣的話,可以參考這個網頁:C++ portability guide (3)#pragma warning( disable : xxxx )
=>編譯時,將編號xxxx的警告關掉
=>意思是說當編譯時,碰到xxxx號警告時,將這個xxxx號警告濾除,不顯示出來
(4)#pragma warning( once : xxxx)
=>xxxx號警告僅報告一次
(5)#pragma warning( error : xxxx)
=>視xxxx號警告為一個錯誤
(6)#pragma message("Compile_Message")
=>編譯時,在編譯輸出框架(Output pane)中加入Compile_Message文字
(7)#pragma pack( show | [n] )
有一個strcut如下:
-------------------------------------------------------------------------------- //sizeof(int) = 4 , sizeof(char) = 1 , sizeof(double) = 8
struct Student
{
char sex;
unsigned int age;
double average;
}; int main()
{
struct Student s1;
cout<<(void *)&s1.sex<
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |