在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