Linux 命令速查
开发工具 man cpp

cpp

GNU C 预处理器

返回

补充说明

cpp 是 GNU C 预处理器,负责展开宏、包含头文件、处理条件编译,并输出预处理后的源码。通常不直接调用,而是由 gcc -E 隐式调用;独立使用便于调试宏展开或生成依赖关系。

它是 GCC 的一部分(Debian/RHEL 的 gcc 包提供)。常见用途:排查宏定义问题、查看某个头文件展开结果、生成 Makefile 依赖。预处理器不了解完整的 C 语法,#if 中的表达式按整数常量规则求值,sizeof 等不能在其中使用。

默认按 C 处理;用 -x c++ 可处理 C++。输出默认写到标准输出,行首的 # 行号 "文件" 标记可用 -P 去掉。调试时结合 -dM 打印所有预定义宏很有用。注意 -I 添加的目录按顺序搜索,系统头文件目录仍会在其后参与查找。

语法

cpp [选项] [输入文件] [输出文件]

选项

  • -D 名字[=值]:定义宏;
  • -U 名字:取消宏定义;
  • -I 目录:添加头文件搜索目录;
  • -include 文件:在处理输入前先包含该文件;
  • -M / -MM:输出 Makefile 依赖规则(-MM 忽略系统头文件);
  • -P:不输出行标记;
  • -C:保留注释;
  • -dM:只输出所有宏定义;
  • -x 语言:指定输入语言(如 c、c++)。

实例

# 查看文件预处理结果
cpp hello.c

# 只列出编译器预定义宏
cpp -dM /dev/null | grep __linux__

# 生成 Makefile 依赖
cpp -MM main.c

# 手动指定宏和头文件目录
cpp -DDEBUG=1 -I./include main.c

# 处理 C++ 源码
cpp -x c++ app.cpp

参考链接