首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C错误冲突的类型

C错误冲突的类型
EN

Stack Overflow用户
提问于 2010-03-24 13:23:36
回答 4查看 16.6K关注 0票数 1

我有以下错误

代码语言:javascript
复制
error : conflicting types for 'sprintf'
error : conflicting types for 'vsprintf'
error : conflicting types for 'vprintf'
error : conflicting types for 'select'

在我的头文件中,代码是

代码语言:javascript
复制
extern char *sprintf(char*,const char*,... )

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

但是对于solaries,我们写为

代码语言:javascript
复制
# ifndef HPUX
extern char *sprintf(char*,const char*,... )
EN

回答 4

Stack Overflow用户

发布于 2010-03-24 13:29:18

您应该只包含<stdio.h>,而不是自己声明函数。(如果您不想从标准库中声明众所周知的sprintf函数,而是一些自定义函数,那么您应该为您的函数选择一个不同的名称)。

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

票数 5
EN

Stack Overflow用户

发布于 2010-03-24 13:28:26

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

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

票数 3
EN

Stack Overflow用户

发布于 2010-03-24 13:33:34

除非你告诉编译器忽略标准包含(和系统C库),否则你可能只想包含标准的头文件,也就是像David Gelhar (第一个回答的)所说的那样。

如果您正在使用其他一些C库,您仍然可以包含标准的头文件,但需要向编译器传递一个不同的include路径。

您可能会喜欢阅读有关extern意图实现的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2505530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档