C语言【预处理器】
  w0pCW4weT65e 2023年11月24日 30 0

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、文件包含

​ 自定义头文件,用" " 。 引号里填相对路径或绝对路径。基于当前目录加./或不加

​ 头文件如果使用 " " 会先从当前目录下找,找不到再从系统找。

​ 头文件如果使用 <> 会直接从系统找。

Win和Linux路径分隔符分别是什么?

4、条件编译
#if 条件 ... #elif ... #else ... #endif		// 这个endif不能省略
#ifdef 宏名称 ... #else ... #endif				// 宏名称定义过则条件成立。没有 #elif
#if defined 宏名称 ... #elif ... #else ... #endif	// 同上。 可以有 #elif
#ifndef 宏名称 ... #else ... #endif		// 宏名称没有定义过则条件成立。没有 #elif
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
  TKwJ4YzyA8uz   2024年05月17日   52   0   0 C语言
  6Df3JnWQUC5m   2024年04月24日   60   0   0 C语言
  fHBiUfJyY67V   2024年04月26日   47   0   0 C语言
  V88gxnVgnp1F   2024年05月08日   92   0   0 C语言
  6Df3JnWQUC5m   2024年05月08日   90   0   0 C语言
  o1ZcTI9mJsxK   2024年05月08日   121   0   0 C语言
  H5oyQecqjP4R   2024年04月26日   44   0   0 C语言
  6Df3JnWQUC5m   2024年04月25日   53   0   0 C语言
  nmX9dIiR6BtA   2024年04月28日   51   0   0 C语言
  6Df3JnWQUC5m   2024年05月17日   63   0   0 C语言
  6Df3JnWQUC5m   2024年04月25日   52   0   0 C语言
w0pCW4weT65e