Während ich den folgenden Code in Eclipse aufbaue, bekomme ich void Wert nicht ignoriert, wie es sein sollte, im Allgemeinen wird dieser Fehler auftreten, wenn wir einen Wert von einer Funktion erwarten Zurückkehrende Leere. Aber hier verwende ich keine Funktion, ich verwende einen void-Zeiger. -Code ist unten:MINGW Kompilierfehler: void Wert nicht ignoriert, wie es sein sollte
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();
}
}
In Zeile *(messagefr[index].data) >= (messagefr[index].minRange)
den Fehler „ungültig Wert nicht, da es ignoriert sein sollte“ kommt. Daten sind Void-Zeiger und ich gebe ihm den Wert &stuctureA.data1
. Jetzt beim Zugriff auf diese Informationen von Daten, d. H. *(messagefr[index].data)
Ich bekomme den Fehler, wenn ich (messagefr[index].data)
Ich bekomme Adresse Daten zugewiesen.
1) der Aufruf von 'NOP()' ist ein komplettes tun nichts. vorschlagen entfernt den einschließenden 'else' Codeblock. 2) das Feld 'isInRange' ist definiert als enthaltend 'false' oder' true', jedoch wird der Code gegen' FALSE' 3 verglichen. Mehrere der Feldtypen in der 'MessageName_t'-Struktur sind nicht definiert. Um diese für Sie zu debuggen, muss der gepostete Code alle Details abdecken, nicht ein Schnipsel aus einem größeren Codeblock. – user3629249
zur besseren Lesbarkeit und Verständnis von uns Menschen: 1) folgen Sie dem Axiom: * nur eine Anweisung pro Zeile und (höchstens) eine Variablendeklaration pro Anweisung. * 2) konsequent den Code einrücken. Einzug nach jeder öffnenden Klammer '{'. Un-Einzug vor jeder schließenden Klammer '}', schlagen Sie vor, dass jeder Einzug 4 Leerzeichen umfasst, da dieser so breit ist, dass er auch mit Schriftarten mit variabler Breite sichtbar ist. – user3629249
in Bezug auf diese Art von Zeile: 'messagefr [index] .messagefr = TRUE;', Es gibt kein Feld namens: 'messagefr'. Schlagen Sie 1) hervor, welche Zeile das Problem verursacht, geben Sie die eigentliche vollständige Fehlermeldung ein, und geben Sie die Definitionen für alle 'homegrown'-Datentypen ein. – user3629249