gcvt函数包含在stdlib.h中。
当我试图编译这个时:
gcc -std=c99 problem.c 2.c -o problem
我得到了信息:
warning: implicit declaration of function ‘gcvt’ [-Wimplicit-function-declaration]
fstr = gcvt(datad,10,buff);
而且不能正确执行。
但我可以在函数测试之前在2.c中添加一行来解决这个问题:
char *gcvt(double number, int ndigit, char *buf);
有人知道为什么吗?
这是我的代码:
2.c.段
#include "2.h"
//char *gcvt(double number, int ndigit, char *buf);--must add this line
void test() {
double datad = 2.3;
char buff[100];
char *fstr;
fstr = gcvt(datad,10,buff);
printf("%s",fstr);
}
2.小时
#ifndef XXX
#define XXX
#include<stdlib.h>
#include<stdio.h>
void test();
#endif
问题c
#include "2.h"
int main()
{
test();
return 0;
}
最佳答案
gcc的主页上写着:
gcvt(): _SVID_SOURCE || _XOPEN_SOURCE >= 500
这意味着定义依赖于宏。
在任何
#include
指令之前添加:#define _SVID_SOURCE
手册页还建议您改用
snprintf
,因为gcvt
已被弃用。