g ++从4.7开始忽略了#include括号内的名称

问题描述 投票:1回答:1

考虑以下代码,其中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。

谢谢

c++ gcc
1个回答
0
投票

您将当前目录包含在搜索路径中(#include <>查看),即-I。确实。在这种情况下,应该完全期望从本地目录获得signal.h。对于将依赖于您的系统的文件名案例,如果系统区分大小写,那么#include也应该是,如果它不是那么好......

我必须说 - 我。非常不寻常,因为#include“”已经开始了。

© www.soinside.com 2019 - 2024. All rights reserved.