C语言预处理

在C语言中,预处理指令是在实际源代码编译之前执行的步骤。它不是编译的一部分。C语言中的预处理程序指令用于定义和替换文本中的标记,还用于将其他文件的内容插入源文件。
当我们尝试编译程序时,先执行预处理程序命令,然后再编译程序。

  • 每个预处理器命令均以#符号开头。
  • 预处理不是语句,故预处理命令不需要(;)结束

C语言宏定义

#define
用于在C编程语言中创建符号常量(称为宏)。此预处理器命令也可以与参数化宏一起使用。

  • 宏替换
  • 宏函数
案例程序如下:
56c6f032633a48b29672c3b8855a25e3?from=pc.jpg

带语句的宏以及多行宏的编写
d015128083e94c3aa08217b29ea4fe38?from=pc.jpg

C语言销毁宏定义


#undef
用于销毁已经使用#define创建的宏。如下测试代码:
d7feb6c961234521abe3f8b888412644?from=pc.jpg

C语言宏判断

#ifdef如果已定义宏,则#ifdef返回TRUE;如果未定义宏,则返回FALSE。
#ifndef如果未定义指定的宏,则#ifndef返回TRUE,否则返回FALSE。
#endif
和#ifdef与#endif成对使用
如下测试代码:
6dc1d6f55a7044599f62f203941516c4?from=pc.jpg

条件编译

#if
#if使用指定宏的值进行条件编译。
#else
#else是#if的替代方法。
#elif
#elif是#else,在一条语句中后接#if。
#endif
#endif用于终止预处理器条件宏。
测试案例如下:
439dc6a5ce684a00b9b880f450dad18f?from=pc.jpg
注意点:
预处理是在编译期完成的,所以在处理变量的时候一定要注意,如下测试代码:
66ef430649f04503a8d471f67dfed318?from=pc.jpg

其他

#include#include用于将特定的头文件插入C程序。
#error#error用于在stderr上打印错误消息。
#pragma#pragma用于向编译器发出特殊命令。
如:包含静态库资源,内存对齐方式。
C语言有预定义的宏
它们如下所示...

  • __ DATE __:当前日期,
  • __ TIME __:当前时间
  • __ FILE __:这包含当前文件名。
  • __ LINE __:包含当前行号。
  • __ STDC __:编译器是ANSI,值为1。
如下测试代码:
a749e2b96b3845bb81806215402e9960?from=pc.jpg