在eclipse中构建下面的代码时,我得到的值不会被忽略,因为它应该是这样,通常这个错误是在我们期待函数返回void。但是在这里我没有使用任何函数,我正在使用一个void指针。 代码如下:MINGW编译错误:void value不应忽略,因为它应该是
typedef struct MessageName_T
{
MPM_ParameterName_t parameterName;
uint32_t minRange;
uint32_t maxRange;
bool_t isInRange;
DataType_t dataType;
bool_t isValueNa;
void* const data;
}MessageName_t ;
MessageName_t messagefr[3] =
/* Parameter, Minimum, Maximum, isInRange dataType isValueNa data*/
{
{ Parameter, Minimum, Maximum, isInRange, dataType, isValueNa, &stuctureA.data1},
{ Parameter1, Minimum1, Maximum1, isInRange1, dataType1, isValueNa1, &stuctureA.data2},
{ Parameter2, Minimum2, Maximum2, isInRange2, dataType2, isValueNa2, &stuctureA.data3}
}
void rangecheck(int index)
{
if(messagefr[index].isValueNa == FALSE)
{
if(*(messagefr[index].data) >= (messagefr[index].minRange) &&
*(messagefr[index].data) <= (messagefr[index].maxRange))
{printf("N");
messagefr[index].messagefr=TRUE;
}
else
{printf("Y");
messagefr[index].isInRange =FALSE;
}
}
else
{
NOP();
}
}
在线路*(messagefr[index].data) >= (messagefr[index].minRange)
即将到来的错误“不忽略,因为它应该是空值”。 数据是无效的指针,我将其赋值为&stuctureA.data1
。 现在,当访问数据的这种信息,即*(messagefr[index].data)
我收到错误,如果我使用(messagefr[index].data)
我得到地址分配给数据。
1)对'NOP()'的调用是一个完全不做的事情。建议删除封闭的'else'代码块。 2)字段'isInRange'被定义为包含'false'或'true',然而,代码与'FALSE'进行比较3)MessageName_t结构中的几个字段类型没有定义。为了用来为你调试,发布的代码需要覆盖所有的细节,而不是来自大块代码的一些片段。 – user3629249
为便于我们人类的可读性和理解:1)遵循以下公理:*每行只有一条语句,并且(最多)每条语句有一个变量声明* 2)一致地缩进代码。在每个大括号'{'后缩进。在每个大括号'}'之前取消缩进,建议每个缩进为4个空格,因为即使宽度可变的字体也足够宽。 – user3629249
关于这种线:'messagefr [index] .messagefr = TRUE;',没有名为:'messagefr'的字段。建议1)指出哪一行给你提出问题,发布实际完整的错误消息,发布所有'本地数据'数据类型的定义。 – user3629249