引用在依赖应用程序中声明的库中的变量
Reference a variable in a library that's declared in a dependent application
我不记得这里的规则是什么,在我的应用程序项目中,我目前在stdafx.h/cpp中声明了一个全局变量:
extern const char *LOGFILE = "test.log"
我发现库需要知道这个变量的值。我可以在库中转发声明它,因为它在构建应用程序之前没有链接,而不会得到关于多重定义符号的错误?
规则是:extern
变量可以在您需要的任意多个编译单元中声明(不能声明=...
)(甚至可以在其中任何一个单元中声明不止一次)。定义(带=...
)在整个程序中只能定义一次。
因此,如果你想编写一个使用这个变量的库,你可以安全地在需要它的库的任何编译单元中声明:你将能够编译库对象并生成库本身,而不会出现错误。库中会有一个未解析的符号,如果它是一个共享库,则在加载时构建可执行文件时将在链接时解析。
您可以在所有源中写入extern const char *LOGFILE;
(NO = ...
部分),或者将其放入。h中并包含
相关文章:
- 在将变量声明为引用时,堆在释放后使用
- 静态变量声明和定义
- 在变量声明中使用 for 循环
- 向量索引变量声明(size_t 或 std::vector<DATATYPE>::size_type)
- C++ 类型类的变量声明不命名类型?
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- std::enable_if 更改成员 *变量* 声明/类型
- 在C++中,变量声明左侧的大括号是什么意思?
- 将变量声明为全局变量,然后声明为局部变量 -Shadowing-
- 命名空间内C++变量声明
- 将静态全局变量声明为内联有什么意义吗?
- 如何将一个变量声明为另一个变量的值
- 如何将迭代器变量声明为私有成员变量
- 没有变量声明为函数,但错误:二进制表达式的操作数无效
- 有没有人有书面证据来保证函数中参数的定义方式与普通变量声明相同?
- ClangTool 如何获取变量声明中模板参数的位置?
- 标准与显式自动推导变量声明
- C 静态变量声明怪异链接器错误
- 如何为数组成员变量声明 getter/setter
- 可视C++变量声明