簡體   English   中英

在頭文件中聲明字符串返回函數。 類型沖突?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM