📜  Linux 中的 cpp 命令和示例(1)

📅  最后修改于: 2023-12-03 15:02:43.259000             🧑  作者: Mango

Linux 中的 cpp 命令和示例

简介

cpp 命令是 C/C++ 程序预处理器,在编译代码之前,对代码中的 #include、宏定义、条件编译等进行处理,将预处理后的代码输出给编译器来进行编译、汇编和链接。

语法

cpp 命令的语法如下:

cpp [options] [source_file] [output_file]
  • source_file 表示要进行预处理的源代码文件。
  • output_file 表示预处理后的输出文件。
  • options 表示可选参数,可以控制预处理的行为。
选项

下面列出了 cpp 命令的一些常用选项:

  • -C:保留注释。
  • -D:定义宏。
  • -E:只进行预处理,不进行编译。
  • -I:指定头文件搜索路径。
  • -U:取消宏定义。
  • -o:指定预处理结果输出文件。
示例
示例一:定义宏

假设我们有一个名为 hello.c 的文件,文件内容为:

#include <stdio.h>

#define MESSAGE "Hello, world!"

int main() {
  printf("%s\n", MESSAGE);
  return 0;
}

我们可以使用 cpp 命令预处理该文件并输出结果到标准输出:

$ cpp hello.c
# 1 "hello.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "hello.c"

int main() {
  printf("%s\n", "Hello, world!");
  return 0;
}

在预处理过程中,宏 MESSAGE 被替换成了 "Hello, world!"

示例二:指定输出文件

同样地,我们可以将预处理结果输出到一个新的文件中,例如:

$ cpp hello.c hello.i

这将把 hello.c 的预处理结果保存到 hello.i 文件中。

示例三:使用选项

我们可以使用选项来控制预处理的行为。例如,我们可以指定头文件搜索路径,例如:

$ cpp -I./include hello.c

这将在 ./include 目录下搜索头文件。

再例如,我们可以定义宏来控制代码的编译过程:

$ cpp -DDEBUG hello.c

这将定义一个名为 DEBUG 的宏,可以在代码中使用 #ifdef 语句来判断宏是否被定义。