欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于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个:

  1. once:只显示一次(警告/错误等)消息
  2. default:重置编译器的警告行为到默认状态
  3. 1,2,3,4:四个警告级别
  4. disable:禁止指定的警告信息
  5. 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库文件加入到本工程中

如果有不当之处,欢迎指正

相关标签: c++