我有一个“ Common.h”文件,该文件存储所有字符串在我的项目中重复使用。
namespace Common{
static const std::string mystring = "IamAwesum";
}
因此,在需要特定字符串的任何文件中,我都包含该文件:
include "Common.h"
然后在需要使用的字符串的地方:
Common::mystring
现在,我在Xcode中注意到目标中没有任何“ .h”文件。但似乎我的程序按预期工作正常。有人可以解释.h文件发生什么情况吗?这是如何运作的 ?是否因为“包含”“ Common.h”的文件具有所有数据的副本?
头文件不会被编译(例外是预编译的头文件,一种常见的构建优化技术,并且会错误地将其编译),但是,由于OP怀疑,它被复制到使用它们的文件中。
来自C ++标准中的[cpp.include]
形式的预处理指令
# include
“ q字符序列”换行导致该指令被源文件的全部内容替换,该源文件的所有内容由定界符之间的指定顺序标识。
包含的文件粘贴到#include
伪指令所在的正在编译的文件中,替换#include
。
因此,如果不包括文件,则永远不会将其替换为正在编译的文件,并且绝对不会发生任何文件。
包含的文件不需要在项目,目标makefile或您拥有的任何内容中列出。该文件的包含严格取决于cpp文件执行的包含,尽管通常会出现一系列查找包含的标头的位置,以从源代码中抽象出工具链和库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句