关于C++代码中的#pragma预处理指令(此为转载)
程序员文章站
2022-05-04 23:39:31
...
关于C++代码中主要的#pragma预处理指令(此为转载)
c++中这是最为复杂的预处理指令,总之慢慢学吧!
预处理指令是指在编译器编译代码时,提供按条件跳过源文件中的代码段、报告错误(错误信息以及行号)和警告条件,以及描绘源代码的不同区域的能力。
总是占用源代码中的单独一行,并且总是以 # 字符和预处理指令名称开头。# 字符的前面以及 # 字符与指令名称之间可以出现空白符。
格式一般为: #pragma Para。其中Para 为参数,下面来看一些常用的参数(来自百度百科)
#pragma message
message 参数能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。
其使用方法为:
#pragma message("消息文本")
#pragma code_seg
另一个使用得比较多的pragma参数是code_seg。 它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它。
格式如:
#pragma code_seg(["section-name"[,"section-class"]])
#pragma once
为了避免同一个头文件被包含(include)多次,只要在头文件的最开始加入这条指令就能够头文件被编译一次。
#pragma once
... ... // 声明、定义语句
#pragma hdrstop
表示编译头文件到此为止,后面的头文件不进行预编译。
#pragma pack
当你使用#pragma pack(n),其中n是1,2,4,8或者16,第一个以后的每个结构成员保存在较小的成员类型或者n字节边界上。如果你使用没有参数的#pragma pack,结构成员将被紧缩到由/Zp指定的值。默认的/Zp紧缩的大小是/Zp8。
#pragma pack( [ n] )
#pragma warning
主要用到的警告表示有如下5个:
- once:只显示一次(警告/错误等)消息
- default:重置编译器的警告行为到默认状态
- 1,2,3,4:四个警告级别
- disable:禁止指定的警告信息
- error:将指定的警告信息作为错误报告
如:
#pragma warning(disable:450734;once:4385;error:164)
等价于:
#pragma warning(disable:450734)//不显示4507和34号警告信息
#pragma warning(once:4385)//4385号警告信息仅报告一次
#pragma warning(error:164)//把164号警告信息作为一个错误。
又如:这里n代表一个警告等级(1—4)。
#pragma warning(push)//保存所有警告信息的现有的警告状态。
#pragma warning(push,n)//保存所有警告信息的现有的警告状态,并且把全局警告等级设定为n。
#pragma warning(pop)//向栈中弹出最后一个警告信息,
#pragma comment
该指令将一个注释记录放入一个对象文件或可执行文件中。
常用的lib关键字,可以帮我们连入一个库文件。
#pragma comment (lib,”user32.lib”) // 该指令用来将user32.lib库文件加入到本工程中
如果有不当之处,欢迎指正