文档章节

#pragma message预编译指令使用技巧

robslove
 robslove
发布于 2015/02/27 09:03
字数 413
阅读 1507
收藏 4

一般情况下,#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”,从而定位到相应的代码行

本文转载自:

共有 人打赏支持
robslove

robslove

粉丝 4
博文 182
码字总数 78228
作品 0
成都
程序员
私信 提问
C语言编译预处理技术一本道来

编译&&预处理.png 一个.C程序,从人懂到计算机懂的流程 编译流程.png 分别简述 预编译(不会去报错,没有真正的到达编译环境) 处理所有的注释,以空格代替 将所有的#define删除,并且展开所...

PcDack
2017/12/04
0
0
VC中pragma指令简介(转)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://yangwei.blogbus.com/logs/1550523.html pragma指令简介 在编写程序的时候,我们经常要用到#pragma指令来设定编译...

技术小美
2017/11/12
0
0
iOS代码运行的磨刀石-预编译指令

iOS中代码运行的磨刀石--预编译指令 所谓预编译,就是程序代码在编译之前,开发工具为我们预先做的一些工作。不要小瞧这些指令,没有它们,我们的代码可能寸步难行。 一、文件包含相关预处理...

珲少
2015/04/28
0
0
[转]预编译指令#pragma的用法

[转]预编译指令#pragma的用法 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方...

IMGTN
2012/11/28
0
0
现代C++中的预处理宏

现代C++中的预处理宏 --徐东来 摘要:在C++从C继承的遗产中,预处理宏是其中的一部分。在现代C++的发展过程中,预处理宏是否还有意义?本文将讨论之。 关键字:预处理 宏 #define #pragma C+...

啊莱
2006/04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

编程新手如何更好地提问

学编程难免遇到问题,遇到问题难免要上网求助。然而有过不少同学向我诉苦,说在网上提问没有人回答,有的还收到一些不是很友好的回复。我自己也在经常上的论坛上目睹过类似的帖子。以至于有人...

crossin
13分钟前
0
0
java.util.concurrent.atomic.AtomicReference 源码

类图: 源码: package java.util.concurrent.atomic;import java.util.function.UnaryOperator;import java.util.function.BinaryOperator;import sun.misc.Unsafe;//原子变量类......

狼王黄师傅
13分钟前
0
0
20181120上课截图

小丑鱼00
15分钟前
0
0
开发中常用的JS知识点集锦

索引 1、对象深拷贝 2、网络图片转base64, 在线图片点击下载 3、对象深拷贝 4、对象深拷贝 5、对象深拷贝 6、对象深拷贝 1、对象的深拷贝(一级属性拷贝和多级属性嵌套拷贝) //深拷贝函数(...

嫣然丫丫丫
19分钟前
0
0
sql server 删除约束条件

1.最近项目用到sql server ,有这样一个场景,删除一个含有默认值的字段,对于mysql来说直接drop就可以了,但对于sql server来说,需要先删除约束条件再删除字段; 加入给user 表新增一个默认...

啊哈关关
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部