gpt4 book ai didi

c - 如何根据条件使用不同的数据类型变量?

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:12 24 4
gpt4 key购买 nike

我有以下两个结构

typedef struct {

int day;

char action [10];

}DataType1;

typedef struct {

int day;

char action [50];

}DataType2;

现在我必须根据某些条件只使用一种结构数据类型。我做过这样的事情

void *ptr;
DataType1 var1;
DataType2 var2;

if (validCondition == true)
{
ptr = &var1;
}
else
{
ptr = &var2;
}
//Used ptr in remaining code

但是使用我填写的这段代码,我的代码中可能有一些设计,这就是为什么我需要这种类型的技巧,但无论如何我需要它。我也想过一些不同的方法,但我怀疑它是如何工作的

if (validCondition  == true)
{
#define GENERIC_TYPE DataType1;
}
else
{
#define GENERIC_TYPE DataType2;
}

GENERIC_TYPE myVar;
//use myVar in remaining code

据我所知,从符号 # 开始的行被视为处理器命令,它将在编译时被识别和替换。但是这里我有 if 条件,其中 validCondition 更改了运行时间并根据 #define 定义。

那么在这种情况下处理器将如何工作?

还有人有更好的想法根据条件定义不同的数据类型变量吗?

最佳答案

您可以为这些数据类型定义一个包装器类型:

struct DayAction {
int day;
char *action;
size_t actionlen;
};

然后,有一个该类型的变量,并根据您的情况,填写该变量的字段:

struct DayAction day_action;

if (condition()) {
day_action.day = dt1.day;
day_action.action = dt1.action;
day_acion.actionlen = sizeof dt1.action;
}

之后,您可以对 day_action 进行操作,因为它指向原始数据。

如果您需要更改dt1.day,请将DayAction.day 设为指针。如果您不需要更改 action,请将 DayAction.action 设为 const char *

关于c - 如何根据条件使用不同的数据类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38496396/

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