1.常用的预处理指令
#include ... 包含头文件
#define ... 进行宏定义
#undef ... 取消宏定义
#ifndef ... 如果没有定义
#ifdef ... 如果定义
#elif ... 否则如果
#else ... 否则
#endif ... 结束如果
... ...
#line 整数n(了解)
主要用于将下一行的行号设置为第n行;
主要用于调试阶段,可以确保整个调试过程中出错的行号一直保持不变;
#warning 字符串
主要用于产生一个警告信息
#error 字符串
主要用于产生一个错误信息
注意:
#if - 主要用于在预编译阶段进行条件判断
if - 主要用于在运行阶段进行条件判断
#pragma GCC dependency 文件名
主要用于让当前文件依赖于指定的文件名,
如果指定文件的最后一次修改时间晚于当前文件,则产生警告信息;
如:
vi show.c文件:
void show(void)
{
printf("我是帅哥我怕谁\n");
}
vi main.c文件:
#pragma GCC dependency "show.c"
int main(void)
{
show();
return 0;
}
#pragma GCC poison 标识符
主要用于将后面指定的标识符设置为毒药,一旦使用则产生错误信息;
#pragma pack(整数n)
主要用于调整结构体的对齐和补齐方式;
结构体的对齐和补齐原则是为了提高存取数据的效率,
带来的缺点就是浪费内存空间,是一种典型的牺牲空间来换取时间的策略;
调整对齐和补齐方式的本质就是为了节省内存空间,但是会浪费时间;
1.3 常用的预定义宏
__FILE__ 获取当前宏所在的文件名 %s
__LINE__ 获取当前宏所在的行号 %d
__TIME__ 获取当前宏所在文件的最后一次编译时间 %s
__DATE__ 获取当前宏所在文件的最后一次编译日期 %s
... ...