我正在将一些代码从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。如果没有,您可以创建自己的名称空间并将日志放在那里。