C语言【预处理器】
1、一些关于预处理的知识
C代码中,一般带 # 的都是预处理指令,包括 宏替换、文件包含、条件编译 等。
为兼容一些老编译器, # 前后一般不写空格
预处理指令后面不加分号。
2、宏定义
// 格式如下
#define 宏名称 (替换文本) // 这个替换文本记得加上括号,因为是直接文本替换,可能会由于优先级而混乱
// 这个替换文本可以是字面量、表达式、函数等
// 带参数的宏。 举个例子
#define print_int(n) printf("%d\n", n)
void main(){
// 宏的使用
int a = 10;
print_int(a);
}
// 宏可嵌套
#define PI 3.14
#define S PI*2*2
// 使用宏定义数据类型
#define BOOL int
取消宏定义。在想解除宏定义的代码前加 #undef 宏名称。之后的代码就不能使用定义好的宏了。
// 带参数的宏。举个例子
#define print_int(n) printf("%d\n", n) // 这个参数不能指定类型,需要自己谨慎,但这种方法比函数高效
3、文件包含
自定义头文件,用" " 。 引号里填相对路径或绝对路径。基于当前目录加./或不加
头文件如果使用 " " 会先从当前目录下找,找不到再从系统找。
头文件如果使用 <> 会直接从系统找。文章来源:https://www.toymoban.com/news/detail-746901.html
Win和Linux路径分隔符分别是什么?文章来源地址https://www.toymoban.com/news/detail-746901.html
4、条件编译
#if 条件 ... #elif ... #else ... #endif // 这个endif不能省略
#ifdef 宏名称 ... #else ... #endif // 宏名称定义过则条件成立。
#if defined 宏名称 ... #elif ... #else ... #endif // 同上。
#ifndef 宏名称 ... #else ... #endif // 宏名称没有定义过则条件成立。
到了这里,关于C语言【预处理器】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!