【发布时间】:2014-08-14 20:52:41
【问题描述】:
如何为每个函数声明一个结构体,如下所示:
#include <stdio.h>
#include <stdlib.h>
struct additionalVariables;
struct container {
int am;
int bm;
struct additionVariables *variables;
};
void foo(void) {
struct container myContainer;
struct additionalVariables {
int x;
int y;
};
myContainer.variables = malloc(sizeof(struct additionVariables));
myContainer.variables->x = 5;
myContainer.variables->y = 6;
free(myContainer.variables);
}
void bar(void) {
struct container myContainer;
struct additionalVariables {
char a;
int b;
int x;
};
myContainer.variables = malloc(sizeof(struct additionVariables));
myContainer.variables->a = 5;
myContainer.variables->b = 6;
myContainer.variables->x = 7;
free(myContainer.variables);
}
int main(void) {
foo();
bar();
return 0;
}
我宁愿不必强制转换。不同的additionVariables 结构必须能够具有相同的名称,例如foo 和bar 都需要x 的属性。
【问题讨论】:
-
我想你正在寻找
union。 -
为
variables成员使用void *。 -
不能使用联合,因为我需要以 myContainer.variables.x 的形式访问它(因此它必须使用 C11 匿名继承),但两者都需要一个名为 x 的属性,所以这不起作用.我的条件非常具体,我不确定这是否可能。寻找最接近的答案。
标签: c struct forward-declaration