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

时间:2012-04-03 05:20:04

标签: c++ g++

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

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

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

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

当我尝试编译上面的代码时,它会出错:

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

上述错误的任何解决方案?

1 个答案:

答案 0 :(得分:-1)

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;
}