gpt4 book ai didi

c - 为什么使用定义为预处理器指令的数据结构无法编译?

转载 作者:行者123 更新时间:2023-11-30 20:46:33 24 4
gpt4 key购买 nike

我正在尝试在 c 中创建一个带有“通用”节点的链表。
我被告知这是可能的,但会出现编译错误。
这是我的代码:

#define DefCell(EltType, CellType, ListType)\
typedef struct CellType *ListType;\
struct CellType {\
EltType element;\
ListType next;\
}\

int isInOrder(struct CELL cell, int bool){
if(cell.next == NULL){
return bool;
} else if (c.element > c.next.element){
return FALSE;
} else {
isInOrder(c, TRUE);
}
}

int main(void){
/* Create CELLs */
DefCell(char, CELL, LIST);
struct CELL a;
a.element = 'a';
}

这不会编译并返回此错误:

Error: variable has incomplete type 'struct CELL'
int isInOrder(struct CELL c, int bool){

如有任何帮助,我们将不胜感激。

最佳答案

这是预处理器扩展后的代码:

int isInOrder(struct CELL cell, int bool){
if(cell.next == NULL){
return bool;
} else if (c.element > c.next.element){
return FALSE;
} else {
isInOrder(c, TRUE);
}
}

int main(void){
/* Create CELLs */
typedef struct CELL *LIST;
struct CellType {
char element;
LIST next;
};
struct CELL a;
a.element = 'a';
}

在定义 isInOrder 时,struct CELL 尚未定义。 struct CELL 必须在 isInOrder 之前定义。

关于c - 为什么使用定义为预处理器指令的数据结构无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60093543/

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