[英]How does includes work in C++?
在我的文件夹中,有一个具有以下结构的小version.cpp
文件:
#include "thelibr/version.h"
const int major = MAJOR;
const int minor = MINOR;
我不明白此代码的作用以及代码的其余部分(存储在同一目录的其他文件中)如何使用它。
首先,我了解该代码设置了两个变量( major
和minor
)的值,但是对我来说不清楚的是在哪里设置了MAJOR
和MINOR
的值。 它们是否设置在thelibr/version.h
。
其次,我还不清楚何时执行上述给定的代码行。 它们没有放入可能从其他文件中编码的其他方法中潜在调用的任何方法中。 那么,如何调用这些行?
第三,我发现在同一目录中的任何其他文件中都没有字符串version
。 这是否意味着这些文件都没有使用存储在version.cpp
的代码。 我们是否不应该在其他文件中的某个位置包含version.h
文件,以便能够使用version.cpp
的代码?
第四,如果我们在version.cpp
设置major
变量和minor
变量的值,这些变量在其他地方是否可见? 这让我感到奇怪,因为我们没有使用诸如global
或external
类的词。
C ++没有像Python这样的模块系统,可以导出纯符号并将其值用于另一个源文件中。 相反,它具有头文件: thelibr/version.h
的内容实际上是复制粘贴的,而不是#include
行。 该文件中的所有内容都将被处理,就像在version.cpp
文件中将其写出一样。
要将文件从一个文件导出到另一个文件(或创建可由链接器或动态加载程序解释的库),请使用extern
存储,这是许多事情的默认设置。
确定从一个.cpp
文件到下一个文件可见的内容相当复杂,但是通常您不能共享编译时值,例如版本号。 您只能共享对运行时对象的访问,例如存储版本号的int
。
要使用另一个.cpp
文件中的major
和minor
,可以在version.h
声明:
extern const int major;
extern const int minor;
然后从另一个文件中#include "thelibr/version.h"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.