C函数已弃用

时间:2017-05-05 06:06:59

标签: c compiler-warnings readline

我使用了以下链接中的代码:

Readline Library

我定义了这样的结构

typedef struct {
  char *name;           /* User printable name of the function. */
  Function *func;       /* Function to call to do the job. */
  char *doc;            /* Documentation for this function.  */
} COMMAND;

编译代码时,编译器会显示以下警告:

“函数已弃用[-Wdeprecated-declarations]”

那么如果我不能使用函数类型,我应该改变什么类型?

2 个答案:

答案 0 :(得分:8)

Function是一个typedef(指向函数返回int的指针的别名),被library标记为已弃用:

typedef int Function () __attribute__ ((deprecated));

只需使用:

typedef struct {
  char *name;            /* User printable name of the function. */
  int (*func)();         /* Function to call to do the job. */
  char *doc;             /* Documentation for this function.  */
} COMMAND;

答案 1 :(得分:-2)

我认为你应该弃用功能。以下可能有效。

#include <stdio.h>

typedef void (*Function)();

typedef struct {
    char *name;           /* User printable name of the function. */
    Function *func;       /* Function to call to do the job. */
    char *doc;            /* Documentation for this function.  */
}COMMAND;

int main() {
    COMMAND commond;

    puts( "end" );



    return 0;
}