C 预处理器与 C 编译器

标签 c makefile

如果我告诉 C 预处理器 #include 一个文件并使用 CPPFLAGS 来帮助查找所需的文件,那么该文件已经被包含了,对吗?如果有的话,用什么告诉 C 编译器与 CFLAGS 相同的包含目录?

最佳答案

我认为没有任何用处。

implicit make rules表示CFLAGS仅在编译 C 程序(从 .c 到 .o)时使用。 CPPFLAGS的值也被添加到编译器命令行中。

CPPFLAGS还用于以下规则:

  • 编译 C++ 程序
  • 编译 Fortran 和 Ratfor 程序
  • 预处理 Fortran 和 Ratfor 程序
  • 汇编和预处理汇编程序
  • 从 C、Yacc 或 Lex 程序创建 Lint 库

CPPFLAGS用于 CFLAGS 的所有情况使用时,添加-I似乎没有意义指令CFLAGS已经在 CPPFLAGS 中.

当然,如果你的 Makefile 有通过 CFLAGS 的自定义规则到编译器,但省略 CPPFLAGS ,这是一个不同的故事。

关于C 预处理器与 C 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756501/

相关文章:

c++ - 用于#include 和其他文件的不同路径

c - 如何为所有 3 个 C 文件创建 makefile?

makefile - 我怎样才能制作一个通用的生成文件来选择所有具有特定扩展名的文件

c - 为 OpenCV 设置编译器路径

c - 帮助了解此 C 代码使用 fork() 生成的输出

c - 如何修复C中的 'Program terminated with signal SIGBUS, Bus error'

ubuntu - Bigram Model checker 安装报错 Makefile 命令问题

MACRO 可以定义为一个数组吗?

C语言,我的函数没有返回值,无法修复它

vim - 防止VIM中的:make发出警告