繁体   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