2012-04-03 18 views
0

我正在使用C++。我已經創建了一個弱符號如下:在C++中使用弱符號時發生錯誤?

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

,並在函數中使用該符號如下:

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

當我試圖編譯上面的代碼它給出了一個錯誤:

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

任何解決上述錯誤?

+0

修正標題錯字。 – nikhil 2012-04-03 05:39:16

+0

試試'if(&myWeakSymbol)'。 – 2012-04-03 05:45:20

+0

謝謝。我試過旅遊解決方案,但沒有工作。 – BSalunke 2012-04-03 05:48:05

回答

-1

什麼是if(myWeakSymbol)應該這樣做?

myWeakSymbol是一個函數。如果您不調用myWeakSymbol,而只是在表達式中使用它,則將其視爲函數地址。 編譯器不知道如何將函數地址轉換爲if語句中的布爾值。

它與弱屬性無關。


編輯:我錯了。您可以使用函數的地址並將其放入if聲明中。它會轉換成布爾。問題一定在其他地方。

不過,它與weak註解沒有任何關係。

下面的例子編譯我的機器上:

typedef const char* string; 

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

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

int main() { 
    return 0; 
} 
+1

感謝Cygnus,但你可以看看http://winfred-lu.blogspot.in/2009/11/understand-weak -symbols-by-examples.html描述了弱符號的使用。 – BSalunke 2012-04-03 05:45:48

+0

@Cygnus:請從您的答案中刪除不正確的東西。 – Mat 2012-04-03 06:04:38

相關問題