rublesaha
Originalplakat- 22. Dezember 2008
- 8. Januar 2009
Ich verwende dieses Code-Snippet
void * handle_;
if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('............');
}
else if (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('.................');
}
Aber ich bekomme die Warnung:
'Klammern um die als Wahrheitswert verwendete Zuweisung vorschlagen' für die erste Zeile, dh die for-Schleife....kann mir jemand helfen, diese Warnung loszuwerden.. ZU
kpua
- 25. Juli 2006
- 8. Januar 2009
Manchmal ist es jedoch der einfachste Weg, das zu codieren, was Sie meinen (obwohl dies in Ihrem Beispiel nicht unbedingt der Fall ist). Wenn Sie eine Zuweisung in einer if-Anweisung haben, erwartet GCC im Allgemeinen Folgendes:
Code: |_+_|
Beachten Sie die zusätzlichen Klammern um die Aufgabe. GCC empfiehlt, die Klammern zu verwenden, um den folgenden Fehler zu vermeiden:
Code: |_+_|
die nicht prüfen würde, ob der foo zugewiesene Wert gleich NULL ist, sondern stattdessen den booleschen Wert (bar() != NULL) an foo zuweisen würde.
Es ist auch üblich und im Allgemeinen klarer, den expliziten booleschen Check dort zu haben, daher erwartet GCC dies. S
Sander
zu
- 24. April 2008
- 9. Januar 2009
Code: |_+_|
ist richtig C (weist b a zu und prüft auf Nicht-Null), aber meistens meinten die Leute wirklich
Code: |_+_|
Da die Zuweisung innerhalb von if() die Ausnahme ist, gibt GCC eine Warnung aus. Auch für zukünftige Leser Ihres Codes bedeuten die zusätzlichen Klammern 'ja, ich meine hier wirklich die Zuordnung'.
Beliebte Beiträge