【发布时间】:2020-10-26 12:01:38
【问题描述】:
我在 C 中的代码具有如下 switch case 语句。
float value_calc ( Type_t type, void *in_data)
{
switch ( type)
{
case 0:
{
int * data = (int*)in_data;
}
break;
case 1:
{
float * data = (float*)in_data;
}
break; <-- error :- data: redefinition; different basic types.
case 3:
{
double * data = (double*)in_data;
}
break;
default:
return 0;
}
for (int i =0; i< 1024; i++)
{
float capture = * (data + i) + diff; <-- error identifier data is undefined
}
这里,Type_t 是枚举,其数据类型为 int =0 作为第一个成员,其他成员依次是 float 和 double。
我已经尝试不使用花括号,并且还按照这里提到的在一些答案中放置分号。但它没有被编译。
我如何正确提及变量将根据情况使用不同的数据类型。
【问题讨论】:
-
你不能。此外,代码很可能不正确。
-
同样给定括号,你也不会得到重新定义错误。请询问您遇到的实际问题,而不仅仅是假设的解决方案。
-
这个:
float * data = (uint32_t*)in_data;看起来很奇怪。你拿了一些东西(可能是一个空指针!?)并将其转换为一个 uint32_t 指针并将结果分配给一个浮点指针。这真的很奇怪。这也适用于其他情况,即演员表与分配不匹配 -
您要解决的实际问题是什么?以某种方式进行泛型编程?什么是“in_data”,它来自哪里?
-
我和 Jabberwocky 在一起。但是,请注意不要将其变成“移动目标”问题(即编辑它以询问使现有答案无效的不同事物)。创造答案的人并不欣赏这一点。 (是的,其中一个就是我......)如果你意识到你想问一个不同的问题,请创建一个单独的新问题。
标签: c casting switch-statement