考虑以下代码,其中test.h尝试使用braced include包含文件“signal.h”。
SIGNAL.H:
#define xyz 5
int testvar;
test.h:
#if !defined (_C1)
#define _C1
#include <signal.h>
int testvar2;
#endif
TEST.CPP:
#include "test.h"
如果您编译:
g++ -dD -E test.cpp -o C1.i
一切都很好,系统signal.h预先设置为test.cpp。但是,如果您编译:
g++ -dD -E -I. test.cpp -o C1.i
本地Signal.h是预先设定的,即使它有不同的情况。
这是预期的行为吗?这影响了Ubuntu上的gcc-4.7,gcc-5.4。
谢谢
您将当前目录包含在搜索路径中(#include <>查看),即-I。确实。在这种情况下,应该完全期望从本地目录获得signal.h。对于将依赖于您的系统的文件名案例,如果系统区分大小写,那么#include也应该是,如果它不是那么好......
我必须说 - 我。非常不寻常,因为#include“”已经开始了。