在编译期间,未包含在目标中的.h文件会发生什么情况
What happens to a .h file that is not included in a target during compilation?
我有一个"Common.h"文件,其中存储了整个项目中重用的所有字符串。
namespace Common{
static const std::string mystring = "IamAwesum";
}
所以在任何需要特定字符串的文件中我都包含file:
include "Common.h"
然后在需要字符串的地方使用:
Common::mystring
现在我注意到在Xcode中,没有一个"。h"文件包含在目标中。但看起来我的程序像预期的那样运行良好。有人能解释一下。h文件会发生什么吗?这是如何工作的呢?是因为"include"Common.h"的文件有所有数据的副本吗?
头文件不被编译(预编译的头文件是例外,这是一种常见的构建优化技术,而且是错误的),而是像OP怀疑的那样被复制到使用它们的文件中。
从<<p> strong> (cpp。在c++标准 中包含[/strong>形式为
的预处理指令"q-char-sequence"
# include
新行将导致该指令被由"分隔符"之间的指定序列标识的源文件的整个内容所替换。
包含的文件被粘贴到#include
指令所在的编译文件中,取代#include
指令。
包含的文件不需要在项目、目标makefile或其他任何地方列出。文件的包含严格地取决于执行包含的cpp文件,尽管通常会提供一个查找包含头文件的位置列表,以便从源代码中抽象出工具链和库。
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 是否可以在没有真实文件的情况下创建 ifstream
- 发生注入类名时会发生什么情况?(C++)
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 重新分配向量时,向量中的内存会发生什么情况
- 如何在添加文件的情况下在VSCode中调试C++程序
- 如果结构中的字符串比使用的 p/调用签名长或短,会发生什么情况?
- 为什么或在什么情况下,你会将参数作为C++中的引用(或指针)传递给函数?
- 如果我向一个12字节的缓冲区写入的字节数少于12,会发生什么情况
- 删除对象(具有不同类型)的引用时会发生什么情况?
- 每个文件(理想情况下是每个部分)的 clang 格式样式覆盖
- 如果我在 c++ 中以 new 的放置形式使用没有足够的内存,会发生什么情况?
- 如何在不重新创建现有文件的情况下写入.txt文件
- 使用 Google 基准测试时返回值会发生什么情况?
- 正在连接的等待条件变量的线程会发生什么情况?
- C++ & C 中的".inc"文件有什么意义?您想在什么情况下使用它?
- 在什么情况下确实需要针对.h文件
- 在编译期间,未包含在目标中的.h文件会发生什么情况