在C99中,itoa函数的隐式声明无效。

24

当我尝试使用函数itoa()时,我得到了以下警告:

在c99中隐式声明的函数无效。

我已在我的头文件中引入了stdlib.h。我正在尝试在一个函数内调用此函数,但我不确定是否允许这样做。


@maxflow:你在哪里声明了itoa - CB Bailey
@CharlesBailey 我已经尝试在主函数和函数内部都声明itoa,但是我得到了相同的错误。 - maxflow
1
只要在使用之前声明它,您就不应该收到您发布的错误。请发布代码。 - CB Bailey
3个回答

26

问题在于itoa()不是标准函数。

你应该看一下这个链接,它给出了一些替代实现方案。


1
他的问题是链接器可用itoa,但没有c定义。声明char* itoa(int, char* , int);应该解决这个问题。 - waynix
1
waynix,你是什么意思?他为什么需要声明它?你的意思是说这种错误表示链接器找到了该符号,但除非他声明它,否则禁止使用它?如果是这样,包含一个声明它的头文件不是更好吗? - Marco
他得到了一个警告而不是错误,因此函数“exists”在编译器工具链或链接器文件中的某个位置。消除警告的一种方法是使用类似于您链接中的实现。但他也可以只声明该函数,问题就解决了。是否这是明智的选择是另一个问题。 - waynix

7

itoa的替代方案通常是sprintf/snprintf。它们是stdio.h的一部分。


4
正如 @Mike Kwan 指出的。可以按以下方式使用 Sprintf:
int load = 15;
char buffer[100];

sprintf(buffer,"%d",load);

printf("buffer in int = %s\n",buffer);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接