有没有办法在标题类型之间有所不同?

时间:2013-08-27 10:15:17

标签: c++

我正在开发一个项目,系统标题可以显示在“”中,也可以显示在<>

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

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

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

2 个答案:

答案 0 :(得分:2)

除了“询问编译器”之外,没有简单的方法可以确定"io.h"<io.h>是从本地目录还是在标准头文件中的某个位置获取的。例如,程序将与#include "iostream"完美地编译。

主要区别在于,当使用"io.h"时,编译器将在本地目录中查找文件“io.h”的FIRST,如果使用<io.h>,它将查看指定的include目录作为“系统包括目录”。但是,没有任何迹象表明系统包含目录不以某种方式包含“当前目录”。

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

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

答案 1 :(得分:0)

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

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

如果包含文件存在名称冲突,我猜你必须手动检查项目文件。

相关问题