在MSVC++中,根据文件是否包含在""或<>中,搜索#include文件的方式不同。引号形式首先在本地文件夹中搜索,然后在/I指定的位置搜索;尖括号形式避免了本地文件夹。
这意味着,在MSVC++中,可能会有与运行时和SDK标头相同名称的标头文件。
因此,例如,我需要包装Windows SDK的windows.h文件以取消一些导致麻烦的宏定义。使用MSVS时,只要使用引号形式包含它,我就可以将(可选的)windows.h文件添加到我的项目中:
在XCode中使用GCC尝试这个技巧并没有起作用。实际上,系统头文件中的尖括号#includes会在我的本地文件夹结构中找到名称类似的头文件。
MSVC系统意味着在自己的文件夹结构中有一个"String.h"头文件是非常安全的。但在XCode中,这似乎是一个主要的禁忌。
是否有一种控制XCode搜索路径行为更像MSVC的方法?还是我只需要避免命名任何可能与系统头文件冲突的头文件名称。编写跨平台代码并使用大量框架意味着意外冲突的可能性很大。
这意味着,在MSVC++中,可能会有与运行时和SDK标头相同名称的标头文件。
因此,例如,我需要包装Windows SDK的windows.h文件以取消一些导致麻烦的宏定义。使用MSVS时,只要使用引号形式包含它,我就可以将(可选的)windows.h文件添加到我的项目中:
// some .cpp file
#include "windows.h" // will include my local windows.h file
在我的windows.h中,我可以使用尖括号形式引入真正的头文件:
// my windows.h
#include <windows.h> // will load the real one
#undef ConflictingSymbol
在XCode中使用GCC尝试这个技巧并没有起作用。实际上,系统头文件中的尖括号#includes会在我的本地文件夹结构中找到名称类似的头文件。
MSVC系统意味着在自己的文件夹结构中有一个"String.h"头文件是非常安全的。但在XCode中,这似乎是一个主要的禁忌。
是否有一种控制XCode搜索路径行为更像MSVC的方法?还是我只需要避免命名任何可能与系统头文件冲突的头文件名称。编写跨平台代码并使用大量框架意味着意外冲突的可能性很大。