[英]Declaring a string returning function in a header file. Conflicting Types?
我的頭文件中有這個:
const char * keyBoard();
在我的一個C文件中,功能是這樣的:
const char * keyboard()
{
//mycode
return string;
}
我的編譯器出現此錯誤:
error: conflicting types for 'keyBoard'
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine)
....................^~~~~~~~
note: an argument type that has a default promotion can't match an empty parameter name list declaration
{
^
(in header file) note: previous declaration of 'keyBoard' was here
const char * keyBoard();
....................^~~~~~~~
我不在乎中間部分,因為我現在不知道它是否重要,但是整個“'keyBoard'的沖突類型”廢話又是什么呢? 據我所知,它們是完全相同的,在這個主題上我找不到任何幫助
根據錯誤消息,您的函數定義為:
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine)
但您將其聲明為:
const char * keyBoard();
這些不匹配。 聲明必須匹配定義:
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine);
您聲明的函數沒有其原型,即參數的數量和類型未知
const char * keyBoard();
在這種情況下,調用函數時,編譯器將執行所謂的默認參數提升 。 錯誤消息表示以下內容(6.5.2.2函數調用)
6如果表示被調用函數的表達式的類型不包含原型,則對每個自變量執行整數提升,並將具有float類型的自變量提升為雙精度。 這些稱為默認參數提升 ....
您應該在調用函數之前聲明該函數並指定其參數。
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine);
考慮到聲明不需要與函數定義匹配。 您可以聲明不帶參數的函數。 但是在這種情況下,您必須考慮默認的參數提升 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.