C语言常用预处理指令及常用宏

本章主要讲解一下C语言中经常使用的高级预处理指令以及高级宏定义。

高级预处理指令
Linux下C语言编程常用预处理指令之高级篇:
1)#line 整数n
用于调试代码的时候,将下一行的行号修改为第n行;
2)#warning 字符串
用于产生警告信息;
3)#error 字符串
用于调试代码的时候,产生错误信息;
4) #if
用于在编译阶段进行条件的判断,而if语句 主要用于在运行阶段进行条件的判断;
5)#pragma GCC dependency 文件名
表示该预处理指令所在的文件依赖于指定的文件名,如果指定文件的最后一次修改时间晚于当前文件,则产生警告信息;
6)#pragma GCC poison 标识符
表示将指定标识符设置为毒药,一旦使用则产生错误信息;
7)#pragma pack(整数n)
表示设置结构体的对齐和补齐方式为n的整数倍;

高级预定义宏
C语言编程中的高级预定义宏:
1)FILE 主要用于获取当前宏所在的文件名;
2)LINE 主要用于获取当前宏所在的行号;
3)DATE 主要用于获取当前宏所在文件的最后一次编译日期;
4)TIME 主要用于获取当前宏所在文件的最后一次编译时间;
注意:
LINE 的数值采用%d格式输出,其他都采用%s输出即可。

实例1:修改并打印行号
C语言常用预处理指令及常用宏_第1张图片
实例2:使用预处理命令产生警告或者错误
C语言常用预处理指令及常用宏_第2张图片

当定义的VER在3到6范围内的时候,正常编译。
C语言常用预处理指令及常用宏_第3张图片

当超出此范围的时候编译出现警告。
实例3:测试结构体的补齐方式
C语言常用预处理指令及常用宏_第4张图片
在我使用的ubuntu系统下默认的字节对齐状态为8字节,不加对齐方式的时候打印该结果应该为24,在这里加上对齐方式的修改之后的结果如下:
这里写图片描述
所以在考察sizeof这个运算符的使用的时候需要考虑到不同的操作系统补齐方式是不一样的,这时候产生的结果可能就是不一样的,尤其是对于结构体的补齐方式一定要注意这个点。

你可能感兴趣的:(c++)