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已被弃用。

08-27 01:54