我的头文件中有这个:
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'''& #34;废话?就我所知,它们是完全相同的,我无法在这个主题上找到任何帮助
答案 0 :(得分:2)
根据错误消息,您的功能定义为:
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine)
但你宣布它为:
const char * keyBoard();
这些不匹配。声明必须符合定义:
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine);
答案 1 :(得分:2)
你声明了没有原型的函数,即参数的数量和类型是未知的
const char * keyBoard();
在这种情况下,当调用该函数时,编译器会执行所谓的默认参数提升。 错误消息表示以下内容(6.5.2.2函数调用)
6如果表示被调用函数的表达式具有类型 不包括原型,执行整数促销 每个参数和类型为float的参数都被提升为 双。 这些被称为默认参数促销 ....
在调用之前,您应该声明指定其参数的函数。
const char * keyBoard(char hintTxt[30], int maxNumbers, bool multiLine);
考虑到声明不需要与函数定义匹配。您可以声明一个没有参数的函数。但在这种情况下,您必须考虑默认参数促销。