0

我正在开发一个系统标题可以出现在“”和<>中的项目

例如: "io.h"<io.h>

我需要确定包含的标题是否是客户。

有人知道是否有办法做到这一点?

4

2 回答 2

2

除了“询问编译器”之外,没有任何简单的方法可以确定是否"io.h"取自<io.h>本地目录或标准头文件中的某处。例如,一个程序可以用#include "iostream".

主要区别在于,编译器在使用时会首先在本地目录中查找文件“io.h” "io.h",如果使用<io.h>它将在指定为“系统包含目录”的包含目录中查找。但是,没有什么说系统包含目录不以某种方式包含“当前目录”。

您可以使用g++ -M myfile.cpp列出文件“myfile.cpp”中使用的包含文件。不幸的是,据我所知,Visual Studio 没有这样的选项。

编辑:MS 编译器确实支持使用该/showinclude选项的类似功能。

于 2013-08-27T10:28:33.657 回答
0

查看编译器的文档,例如,MS C++ 编译器将在带引号的本地后检查系统包含(因此#include "io.h",如果没有io.h本地头文件,则会获取系统包含),但不会在本地查找尖括号:

http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

我猜如果包含文件存在名称冲突,您将不得不手动检查项目文件。

于 2013-08-27T10:22:46.630 回答