#pragma message的作用

來源:互聯網
上載者:User

標籤:

一般情況下,#pragma message( messagestring )是在編譯期間,將一個文字串(messagestring)發送到標準輸出視窗。典型的使用方法是在編譯時間報告和顯示資訊。下面的程式碼片段是編譯期間在標準輸出視窗顯示一條訊息:

#if _M_IX86 == 500
#pragma message( "Pentium processor build" )
#endif

 

messagestring 參數可以將文字串常量擴充成一個宏,從而可以顯示任何形式的字元串。例如,下面的語句顯示被編譯檔案的名字以及檔案被最後一次修改的日期和時間:

#pragma message( "Compiling " __FILE__ ) 
#pragma message( "Last modified on " __TIMESTAMP__ ) 
#pragma message("Remember to write some actual code in this sample app!!"))

下面我們就利用這個特性,進一步擴充#pragma message的使用。先在一個標頭檔(假設為lfpragma.h)中定義下面的宏:

#define PTODO_LINENUMBER_TO_STRING(x) #x
#define PTODO_LINENUMBER(x) PTODO_LINENUMBER_TO_STRING(x)
#define INCLUDE_FILE_AND_LINE(string) __FILE__"(" PTODO_LINENUMBER(__LINE__) "): "string

然後在任何cpp檔案中包含lfpragma.h檔案,那麼我們就可以象下面這樣引用前面定義的宏。如:

#pragma message( INCLUDE_FILE_AND_LINE("Compiling ") __FILE__ ) 
#pragma message( INCLUDE_FILE_AND_LINE("Last modified on ") __TIMESTAMP__ ) 
#pragma message(INCLUDE_FILE_AND_LINE("Remember to write some actual code in this sample app!!"))

這樣使用#pragma message與通常使用的方法有什麼不同呢?平常我們使用#pragma message時,在標準輸出視窗中可以看見#pragma message的輸出資訊,但是滑鼠點右鍵彈出的操作功能表中“Go to Error/Tag”功能表項目是置灰的,不可用。但是如果使用上面定義的宏,我們就可以啟用操作功能表中“Go to Error/Tag”,從而定位到相應的程式碼

pragma message是用來告訴程式員,程式在編譯時間期的資訊。而outputdebugstr則是告訴程式員,程式在運行時期的資訊。

下面就以一個例子來講解pragma message。

 

配合#if/#ifdef/#ifndef設定編譯時間的提示資訊,例如: 
//test.cpp 

#define UNICODE 

#ifdef UNICODE 
#pragma message("使用UNICODE字元集") 
#else 
#pragma message("使用ANSI字元集") 
#endif 

int main() 

return 0; 

 

#pragma message的作用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.