根据C中的条件语句声明和初始化相同的变量但具有不同的数据类型

时间:2016-06-10 06:31:47

标签: c

我必须使用具有不同用户定义数据类型的相同变量名。

例如

if (scan = NEAR)
{
  Near_t p_Data = getData()->Near;
}
else if (scan == FAR)
{
  Far_t p_Data = getData()->Far;
}

Data_1 = p_Data->d1;
Data_2 = p_Data->d2;

因此,我想消除不同数据类型的重复代码。 以上述方式,它会引发错误,因为声明属于条件语句和范围的范围。也发生了重新定义 如何实现这个功能呢?

3 个答案:

答案 0 :(得分:1)

绝对不可能。在这种情况下,有两种方法可以避免重复:

  1. 重新组织您的数据,以便有一种数据类型,而不是一堆具有类似命名字段的不同结构。
  2. 在宏中重复代码。

答案 1 :(得分:0)

你的问题还不完整,你到底想要完成什么?

对于这样的问题,你应该使用union。例如:

union Some_union {
   int i;
   float f;
} data;

union所占用的内存足够大,可以容纳联盟中最大的成员。一次只能访问一个工会成员。

在此处详细了解工会:Examples of Union in C

答案 2 :(得分:0)

在设计程序时只需使用常识:

Type_d1 d1;
Type_d2 d2;

if (scan == NEAR)
{
  d1 = getData()->Near->d1;
  d2 = getData()->Near->d2;
}
else if (scan == FAR)
{
  d1 = getData()->Far->d1;
  d2 = getData()->Far->d2;
}

Data_1 = d1;
Data_2 = d2;