博客專欄

        EEPW首頁 > 博客 > pragma message的作用

        pragma message的作用

        發布人:電子禪石 時間:2022-08-05 來源:工程師 發布文章

        一般情況下,#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; 


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        波段開關相關文章:波段開關原理




        關鍵詞: C

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广宁县| 商水县| 耒阳市| 邓州市| 东方市| 永丰县| 金塔县| 黄大仙区| 天等县| 疏勒县| 科技| 南通市| 宁远县| 博罗县| 德江县| 大渡口区| 巫山县| 宜昌市| 邳州市| 建平县| 西吉县| 紫阳县| 金昌市| 遂平县| 枣强县| 凤庆县| 东平县| 克什克腾旗| 平塘县| 定南县| 右玉县| 老河口市| 宿松县| 盈江县| 元氏县| 富阳市| 临湘市| 隆回县| 武汉市| 潍坊市| 平顶山市|