这是一些标准的定义宏,源码里面没有,但是编译器会认
就是少一些开销
少了检查
有多次的计算
难以调试
简单和性能攸关,可以使用函数宏
简单的代码片段(如数学公式)且性能要求高时,可以使用函数式宏。
上面的功能是预处理器带来的。
C语言预处理器是编译器的一部分,在编译前处理源代码。预处理器的任务是根据源代码中的 预处理指令(以#开头)对代码进行转换和扩展,生成一个没有预处理指令的新代码文件,供后续编译器处理。
预处理器允许定义符号常量和代码片段(宏),并在代码中用实际内容替换这些符号。
取消定义
工作流程是:
处理宏定义和替换:将所有定义的宏用实际内容替换。 处理文件包含:将头文件内容插入到代码中。 处理条件编译:根据条件保留或删除特定代码段。 其他操作:处理符号拼接、字符串化等操作。
gcc -E source.c -o preprocessed.c
C语言预处理器的核心任务是在编译前对代码进行转换和扩展。