在c中动态更改结构属性

标签 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,上述结构将启用 union 。但我想在运行时动态地实现同样的事情。就像如果函数返回 true,则应该启用 union ,否则不应定义 union 。谁能告诉我这是否可以实现。

谢谢,

最佳答案

不,那是做不到的。 C 是一种典型的静态编译语言。这意味着当程序运行时,没有留下任何元信息(如类型信息),只有原始机器代码。

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

关于在c中动态更改结构属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033361/

相关文章:

c - x86 gcc sleep block 或自旋?

c - 为什么这个程序没有得到任何输出来使用递归对数组进行冒泡排序?

c - 对话框不工作 - win32 api

c - 如何在 OpenMP 中实现并行化

dictionary - 使用 Golang 将包含结构体作为值的映射导出到 csv

无法将字符串输入结构数组

C- 将结构数组设置为 null

c - 在 main 之前进行重要初始化的最优雅的方法是什么?

java - 在单独的进程中打开 url

Spring WebSockets 运行时监控 STOMP 帧 - 解释