gpt4 book ai didi

c++ - 在项目中只调用一次宏

转载 作者:行者123 更新时间:2023-11-28 05:01:48 30 4
gpt4 key购买 nike

我正在尝试在项目中设置 easylogging++,但遇到了以下问题:

INITIALIZE_EASYLOGGINGPP 应该在项目中只调用一次。现在,如果我从我的 main.cpp 调用这个宏并且只在 main.cpp 中包含 easylogging++.h - 一切正常。但是,当我尝试将 easylogging++.h 包含在更多 .cpp 文件中时,我遇到了 undefined reference 的链接器问题(就像尚未调用宏一样)。如果我将对该宏的调用放在按字母顺序排列在 main.cpp 之前的文件中,链接器会正常解析所有内容。在链接阶段,对象按字母顺序排序。

有什么好的方法可以解决这个问题吗?还是我必须尝试在链接时强制执行不同的文件顺序?

我对这类问题没有太多经验,尝试用谷歌搜索,找不到解决方案。如果已经有类似的问题,抱歉,没找到。

感谢您的帮助!

最佳答案

也许您可以将调用包装在您使用 std::call_once() 调用的函数中,例如:

void setup_logging() {
static std::once_flag once;
std::call_once(once, [] () { INITIALIZE_EASYLOGGINGPP(); });
}

这样您可以多次调用 setup_logging(),但宏只被调用一次。

关于c++ - 在项目中只调用一次宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751534/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com