我正在研究C ++。我创建了一个弱符号如下:
string* myWeakSymbol(const string str)__attribute__((weak));
并在以下函数中使用此符号:
void function()
{
if(myWeakSymbol)
myWeakSymbol("balaji");
}
当我尝试编译上面的代码时,它会出错:
error: could not convert 'myWeakSymbol' to 'bool'
上述错误的任何解决方案?
答案 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;
}