Что 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;
}