Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 参数不';Linux中的t匹配原型错误_C_Linux_Struct_Function Prototypes - Fatal编程技术网

C 参数不';Linux中的t匹配原型错误

C 参数不';Linux中的t匹配原型错误,c,linux,struct,function-prototypes,C,Linux,Struct,Function Prototypes,我有具有以下函数声明的头文件: extern getEmailDetailsResult * getemaildetails_5(getEmailDetailsInput *, CLIENT *); 在my.C文件中,函数定义是 getEmailDetailsResult* getemaildetails_5(inputParams, rqstp) getEmailDetailsInput *inputParams; struct svc_req *rqstp; 当我在Un

我有具有以下函数声明的头文件:

extern  getEmailDetailsResult * getemaildetails_5(getEmailDetailsInput *, CLIENT *);
在my.C文件中,函数定义是

getEmailDetailsResult* getemaildetails_5(inputParams, rqstp)
    getEmailDetailsInput *inputParams;
    struct svc_req *rqstp;
当我在Unix中编译程序时,编译是成功的。但是在Linux(GCC4.1.2)中,我得到以下错误
“错误:参数–rqstp–与原型不匹配”
。具有函数原型的.h文件由操作系统在编译期间生成。
Linux中的错误原因可能是什么?

看起来
struct svc_req*
指针与
CLIENT*
指针不同。

您有两个指针,
struct svc_req*
CLIENT*
。出现此错误是因为两个指针各自指向不同的类型。这是一个
struct svc_req
CLIENT
不是同一类型的东西,因此这两个指针不兼容。

如何声明
CLIENT
?如果将
extern
原型中的
CLIENT
更改为
struct svc_req
,Linux构建是否停止抱怨?嗨,Michael,声明函数原型的头文件是“api.h”,它是由rpcgen在编译期间生成的。因此,我想不可能更改原型定义。在Unix中,由rpcgen生成的api.h包含函数原型“extern getEmailDetailsResult*getemaildetails_5();”,程序编译时没有错误。即使生成了文件,您也可能希望安排尝试该建议(或者查看
客户端是什么)。了解实际情况是找出最佳解决方法的第一步。根据您的评论,您可以使用另一种方法来了解为什么在Unix系统上
api.h
只有一个函数声明(严格地说,它不是原型),而在Linux上生成一个完整的原型。第三件要看的事情是,在Linux上,您是否可以说服系统使用ANSI/ISO样式的参数声明生成函数定义。通过更改头文件中的函数声明(将CLIENT*修改为“struct svc_req*”),错误已被清除。谢谢!您好,Jens,.h文件是由rpcgen在编译过程中生成的。嗯,可能是这样,但要找到根本原因,您必须确定客户机是什么类型的。如果它与结构svc_req不同,那就是您的问题。您可能不正确地使用了rpcgen,但这几乎不可能从远处进行诊断。