警告:从不兼容的指针类型初始化 [-Wincompatible-pointer-types]

罗汉克

请帮助我确定菜单项的函数指针的问题是给出错误“从不兼容的指针类型初始化”

这是头文件

/**
 * Represents a function that can be selected from the list of
 * menu_functions - creates a new type called a menu_function.
 */
void displayItems(VmSystem * system);
typedef void (*MenuFunction)(VmSystem *);


/**
 * Represents a menu item to be displayed and executed in the program.
 **/
typedef struct menu_item
{
    char text[MENU_NAME_LEN + NULL_SPACE];
    MenuFunction function;
} MenuItem;

void initMenu(MenuItem * menu);
MenuFunction getMenuChoice(MenuItem * menu);


MenuItem menu[NUM_MENU_ITEMS];

主菜单文件

typedef enum boolean
{
    FALSE = 0,
    TRUE
} Boolean;

void initMenu(MenuItem * menu)
{
    /* Strings names of menu items */
    char * menu_items[] = {
        "Display Items",
        "Purchase Items",
        "Save and Exit",
        "Add Item",
        "Remove Item",
        "Display Coins",
        "Reset Stock",
        "Reset Coins",
        "Abort Program"
    };

菜单项的功能指针

    Boolean(*MenuFunction[])(VmSystem *) = {
        displayItems,  /*Here i got the error */
        purchaseItem,
        saveStock,
        addItem,
        removeItem,
        displayCoins,
        resetStock,
        resetCoins,
        abortProgram
    };
某程序员哥们

你有两个问题。

首先:

typedef void (*MenuFunction)(VmSystem *);

其次是

Boolean(*MenuFunction[])(VmSystem *) = { ... };

两个不同的东西,同一个名字。

然后对于您的错误:您在评论中声明,例如displayItem匹配函数 type MenuFunction,并且它返回void问题是数组MenuFunction(看看这有多混乱?)是一个函数返回的数组Boolean两种类型不兼容,必须换一种。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

警告:从不兼容的指针类型 [-Wincompatible-pointer-types] 传递“accept”的参数 2

在 c 中将大端转换为小端。警告:从不兼容的指针类型返回 [-Wincompatible-pointer-types] 返回 src;

数组指针编译时间警告:警告:从不兼容的指针类型初始化

警告:从不兼容的指针类型赋值 [默认启用] 并从不同大小的整数转换为指针 [-Wint-to-pointer-cast]

指针数组中的警告“从不兼容的指针类型初始化”

分配给指针时从不兼容的指针类型警告进行初始化

警告:从不兼容的指针类型初始化-如何初始化包含函数指针的结构体数组

typedef函数指针->从不兼容的指针类型初始化

proc_dir_entry警告:从不兼容的指针类型初始化[默认启用]

当函数将数组作为参数时,C“警告:从不兼容的指针类型初始化”

“从不兼容的指针类型初始化”警告。我不明白原因

如何解决:从不兼容的指针类型初始化

从不兼容的指针类型(指向函数的指针)进行初始化

从不兼容的指针类型获取初始化的上下文

在结构中引用结构会生成“incompatible-pointer-types”警告

警告-从不兼容的指针类型分配

收到“警告:从不兼容的指针类型赋值”

初始化指向结构的指针时类型不兼容

NSComparator错误:不兼容的块指针类型初始化

初始化'Method *'C的不兼容指针类型

C:不兼容的指针类型初始化

如何更正警告:从不同大小的整数强制转换为指针[-Wint-to-pointer-cast]

C中的指针函数:来自不兼容指针类型的foo初始化

c警告-从不兼容的指针类型传递'insert'的参数1

警告:从不兼容的指针类型传递'xyz'的参数x

C警告从不兼容的指针类型传递'getopt'的参数2

警告:从不兼容的指针类型 const int (*)[3] 赋值给 int **

不兼容的指针类型使用'UITextField *'类型的表达式初始化'NSString *'

从不兼容的指针类型传递