加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – #include – 括号与XCode中的引号?

发布时间:2020-12-14 17:36:07 所属栏目:百科 来源:网络整理
导读:在MSVC中,#include文件的搜索方式不同,具体取决于文件是包含在“”还是中.引用的表单首先在本地文件夹中搜索,然后在/ I指定的位置搜索,尖括号形式避免使用本地文件夹. 这意味着,在MSVC中,可以使用与运行时和SDK标头同名的头文件. 因此,例如,我需要包装window
在MSVC中,#include文件的搜索方式不同,具体取决于文件是包含在“”还是<>中.引用的表单首先在本地文件夹中搜索,然后在/ I指定的位置搜索,尖括号形式避免使用本地文件夹.

这意味着,在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系统意味着在我自己的文件夹structre中有一个“String.h”头文件是非常安全的.在XCode上,这似乎是一个重要的不.

有没有办法控制XCode中的搜索路径行为更像是MSVC?或者我只需要避免将任何可能与系统头冲突的任何标头命名.编写跨平台代码并使用大量框架意味着偶然冲突的可能性似乎很大.

解决方法

你应该能够用gcc做同样的事情(我不知道xcode包装了多少内容并阻止访问某些功能).控制搜索路径有很多选项(请参阅 http://gcc.gnu.org/onlinedocs/gcc-4.5.0/cpp/Search-Path.html和 http://gcc.gnu.org/onlinedocs/gcc-4.5.0/cpp/Invocation.html并查找-iquote).使用-v调用gcc将为您提供指定两者不同的路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读