gpt4 book ai didi

c++ - C: union 实际用在什么地方?

转载 作者:IT老高 更新时间:2023-10-28 12:42:46 25 4
gpt4 key购买 nike

我有一个例子,其中保证了类型的对齐, union max_align 。我正在寻找一个实际使用 union 的更简单的例子来解释我的 friend 。

最佳答案

我通常在解析文本时使用 union 。我使用这样的东西:

typedef enum DataType { INTEGER, FLOAT_POINT, STRING } DataType ;

typedef union DataValue
{
int v_int;
float v_float;
char* v_string;
}DataValue;

typedef struct DataNode
{
DataType type;
DataValue value;
}DataNode;

void myfunct()
{
long long temp;
DataNode inputData;

inputData.type= read_some_input(&temp);

switch(inputData.type)
{
case INTEGER: inputData.value.v_int = (int)temp; break;
case FLOAT_POINT: inputData.value.v_float = (float)temp; break;
case STRING: inputData.value.v_string = (char*)temp; break;
}
}

void printDataNode(DataNode* ptr)
{
printf("I am a ");
switch(ptr->type){
case INTEGER: printf("Integer with value %d", ptr->value.v_int); break;
case FLOAT_POINT: printf("Float with value %f", ptr->value.v_float); break;
case STRING: printf("String with value %s", ptr->value.v_string); break;
}
}

如果您想查看 union 是如何被大量使用的,请使用 flex 检查任何代码/bison .例如见 splint ,它包含大量的 union 。

关于c++ - C: union 实际用在什么地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951269/

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