gpt4 book ai didi

c - 错误: incompatible types in assignment of unions

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

我有一些代码。为了编译我使用 gcc 编译器。

union uStackElement {
int i;
double d;
}
typedef union uStackElement StackElement;

...
StackElement stack_pop(Stack s);
...
StackElement a = stack_pop(Stack s); // error: incompatible types in assignment
...

我不明白出了什么问题。 :(

更新:堆栈定义:

struct sStack
{
int top ;
StackElement array[STACK_SIZE];
};
typedef struct sStack Stack;

函数stack_pop:

StackElement stack_pop(Stack s) {
StackElement ret;
if (s.top < 0) {
// TODO : error
}
ret = s.array[s.top--];
return ret;
}

最佳答案

这可能是您的错误:

union uStackElement {
int i;
double d;
} // << missing semicolon

话虽如此,还存在许多其他问题,例如如果要对其进行变异,则需要将 Stack 对象作为指针传递。

<小时/>

以下代码编译成功,这就是您此时所显示的全部内容。

#define STACK_SIZE 10

union uStackElement {
int i;
double d;
};
typedef union uStackElement StackElement;

struct sStack
{
int top;
StackElement array[STACK_SIZE];
};
typedef struct sStack Stack;

StackElement stack_pop(Stack s) {
StackElement ret;
if (s.top < 0) {
// TODO : error
}
ret = s.array[s.top--];
return ret;
}

int main() {
Stack s;
StackElement a = stack_pop(s);
}

如果上面的代码看起来像您的代码,那么您需要编辑您的问题,以便我可以获取您的代码,并通过编译器运行它并亲自查看错误。否则,您未包含的代码很可能实际上就是错误所在。

关于c - 错误: incompatible types in assignment of unions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19480222/

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