在c中动态更改结构属性

时间:2015-05-04 14:59:23

标签: c struct runtime sizeof

我在C中有一个问题。我的结构的定义是这样的。

struct c1 
{
    int a ; 
    int b ; 
#ifdef _UNION_DEFINED
    union {
#endif
       float c; 
       float d;
#ifdef _UNION_DEFINED
    };
#endif
};

如果启用了标志_UNION_DEFINED,则上述结构将启用联合。但我希望在运行时动态地实现相同的功能。就像函数返回true一样,应该启用union,否则不应该定义union。任何人都可以告诉我,这是否可以实现。

谢谢, d

1 个答案:

答案 0 :(得分:2)

不,这是无法实现的。 C通常是一种静态的编译语言。这意味着当程序运行时,没有剩下的元信息(如类型信息),所有都是原始机器代码。

您可以定义两种结构,然后在运行时根据需要选择合适的结构。