C++对日志静态变量的重新定义与包含的全局变量冲突



我正在将一些代码从Swift移植到C++。我在每个Swift文件的顶部都做了以下操作:

private let log = os.Logger("Foo")

这定义了文件本地的log变量。它就像C和C++中的static

如果我在C++中尝试类似的东西,在实现文件(而不是头(中:

static MyLib::Logger log("Foo");

我得到这个错误:

将"log"重新定义为不同类型的符号,以前的定义如下:
//usr/include/c++/v1/math.h:977:1:log(_A1 __lcpp_x(_NOEXCEPT{return::log((双(__lcpp-x(;}

因此它与数学log函数冲突。有没有一种方法可以保留我的静态log变量,并以某种方式赋予它优先级来解决名称冲突错误?还是我只需要重命名日志变量?

根据您的情况,有多种方法可以做到这一点,但最简单的方法似乎是将日志重命名为_log或my_log。如果没有,您可以创建自己的名称空间并将日志放在那里。

相关内容

  • 没有找到相关文章

最新更新