繁体   English   中英

C错误冲突类型

[英]C error conflicting types

我有以下错误

error : conflicting types for 'sprintf'
error : conflicting types for 'vsprintf'
error : conflicting types for 'vprintf'
error : conflicting types for 'select'

在我的头文件中,代码是

extern char *sprintf(char*,const char*,... )

实际上我包括#include <stdio.h>

但是对于日晒,我们写成

# ifndef HPUX
extern char *sprintf(char*,const char*,... )

不必自己声明功能,而应包含<stdio.h> (如果您不打算从标准库中声明众所周知的sprintf函数,而是从某些自定义函数中声明,则应为函数选择一个不同的名称)。

您的声明导致类型冲突,因为同名的标准库函数返回ìnt ,而不是char*

不要手动声明标准函数,只需包含<stdio.h>

(而且,如果您坚持要自己声明它们,至少要正确选择类型...)

除非您告诉编译器忽略标准包含(和系统C库),否则您可能只想包含标准标头,即正如David Gelhar (第一个回答)所说的那样。

如果使用的是其他C库,则仍将包括标准标头,但需要通过将不同的include路径传递给编译器。

您可能会喜欢阅读extern打算完成的工作。

根据此Solaris手册页(对于Solaris DDI)<sys/ddi.h>sprintf定义为返回char * 似乎该功能定义仅用于设备驱动程序开发。 如果您未实现设备驱动程序,请坚持使用标准C版本(返回int ),方法是包含<stdio.h>并且不要在标头或源代码中的任何位置再次声明它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM