zoukankan      html  css  js  c++  java
  • #pragma message的作用

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

  • 相关阅读:
    v4L2编程
    我的c#开发之路
    JS 获取页面input控件 追加样式属性
    FileUpload控件应用
    C# Winform项目下实现左侧菜单右侧界面显示效果
    在DropDownList 控件绑定数据源中新增一条自定义数据
    在datatable数据中自定义增加一列
    java 实现字符串词频统计
    Hibernate3.x 中BLOB、CLOB 注解配置写法
    lucene 排序
  • 原文地址:https://www.cnblogs.com/youxin/p/5437861.html
Copyright © 2011-2022 走看看