引用在依赖应用程序中声明的库中的变量

Reference a variable in a library that's declared in a dependent application

本文关键字:变量 声明 应用程序 引用 依赖      更新时间:2023-10-16

我不记得这里的规则是什么,在我的应用程序项目中,我目前在stdafx.h/cpp中声明了一个全局变量:

extern const char *LOGFILE = "test.log"

我发现库需要知道这个变量的值。我可以在库中转发声明它,因为它在构建应用程序之前没有链接,而不会得到关于多重定义符号的错误?

规则是:extern变量可以在您需要的任意多个编译单元中声明(不能声明=...)(甚至可以在其中任何一个单元中声明不止一次)。定义(带=...)在整个程序中只能定义一次。

因此,如果你想编写一个使用这个变量的库,你可以安全地在需要它的库的任何编译单元中声明:你将能够编译库对象并生成库本身,而不会出现错误。库中会有一个未解析的符号,如果它是一个共享库,则在加载时构建可执行文件时将在链接时解析。

您可以在所有源中写入extern const char *LOGFILE; (NO = ...部分),或者将其放入。h中并包含