gpt4 book ai didi

c - 警告 : initialization from incompatible pointer type [-Wincompatible-pointer-types]

转载 作者:行者123 更新时间:2023-11-30 20:31:32 29 4
gpt4 key购买 nike

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

这是头文件

/**
* 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 与函数类型 MenuFunction 匹配,并且它返回 void。问题在于数组 MenuFunction (看看这有多令人困惑?)是一个返回 Boolean 的函数数组。这两种类型不兼容,您必须更改一种类型。

关于c - 警告 : initialization from incompatible pointer type [-Wincompatible-pointer-types],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50483540/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com