七、预处理选项
(1)-include file 在处理常规输入文件之前,先处理include file,则此文件被先编译
例如:
a.使用g++ ctest.c,会报错:
ctest.c: In function ‘int main()’:
ctest.c:13: 错误:‘comp’在此作用域中尚未声明
b.使用g++ -include ctest.cc ctest.c成功编译,并可运行
c.假设在ctest.c中加入#include "ctest.cc" :
d.使用g++ ctest.c成功编译,并可运行;用g++ -include ctest.cc ctest.c会报“重复的函数声明"
(2)-imacros file 在处理常规输入文件之前,先处理include file,但忽略输出结果,致使只使file的宏生效
例如:
a.使用g++ ctest.c会报错:未声明comp和MAX
b.使用g++ -include ctest.cc ctest.c会成功编译,并可运行
c.使用g++ -imacros ctest.cc ctest.c会报错:未声明comp,因此可以看出-imacros只是使宏生效,而忽略了编译文件ctest.cc的输出结果
(3)-idirafter dir 如果在主包含路径中没找到(-I指定),则从此第二包含路径中查找
(4)-iprefix prefix 作为-iwithprefix选项的前缀