关于#pragma message的转载

本文介绍了一种使用预编译指令#pragma message结合宏定义的方式,在编译过程中不仅可以在标准输出窗口显示信息,还可以通过上下文菜单定位到源代码的具体位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一般情况下,#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”,从而定位到相应的代码行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值