2012-12-04 55 views
0

我聲明瞭以下char*,並試圖將它傳遞給需要char *的第三個參數的函數:從常量轉換無效,但沒有聲明爲const

char *echo; 
prompt = ssh_userauth_kbdint_getprompt(primarySession, 0, echo); 

但是,我得到的錯誤:

error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] 

我也試過宣佈爲char echo;和傳遞的參數爲&echo。但我並不需要這個函數在echo中改變的值。所以我想通過NULL,但我想我預計這是一個const。我也試過this trick

char echo; 
prompt = ssh_userauth_kbdint_getprompt(primarySession, 0, (char *)(&echo)); 

仍然沒有成功。建議?

+1

忘掉'echo'。這不是關於你的'回聲'。它是關於'提示'的。你的'prompt'聲明怎麼樣? – AnT

回答

3

看那個函數的聲明:

const char * 
ssh_userauth_kbdint_getprompt (ssh_session session, unsigned int i, char *echo) 

因此,它是prompt需要是const char *而不是char *

+0

http://api.libssh.org/master/group__libssh__auth.html – Paul

+0

啊,是的,我甚至在查看返回類型時也分心了,因爲錯誤被聲稱發生在第63列,直接在頂端'&echo'上。 ... – vlad417

1

問題是該函數的返回值,而不是它的任何參數。

0

可能錯誤不在你認爲的地方,而是在返回類型中。我猜你的prompt變量是char*函數返回char const*

相關問題