在C++中使用弱符号时出错

Getting errors while using weak symbol in C++?

本文关键字:符号 出错 C++      更新时间:2023-10-16

我正在开发C++。我创建了一个弱符号如下:

string* myWeakSymbol(const string str)__attribute__((weak));

并在如下函数中使用了此符号:

void function()
{
   if(myWeakSymbol)
      myWeakSymbol("balaji");
}

当我试图编译上面的代码时,它给出了一个错误:

error: could not convert 'myWeakSymbol' to 'bool'

以上错误有什么解决办法吗?

if(myWeakSymbol)应该做什么

myWeakSymbol是一个函数。如果您不调用myWeakSymbol,而只是在表达式中使用它,那么它将被视为函数地址编译器不知道如何将if语句中的函数地址转换为布尔值

它与弱属性无关


编辑:我错了。您可以获取函数的地址并将其放入if语句中。它将转换为bool。问题一定出在别的地方。

不过,它与weak注释无关。

下面的例子在我的机器上编译

typedef const char* string;
string* myWeakSymbol(const string str)__attribute__((weak));
void function()
{
  if(myWeakSymbol)
    myWeakSymbol("balaji");
}
int main() {
  return 0;
}