rublesaha
Původní plakát- 22. prosince 2008
- 8. ledna 2009
Používám tento fragment kódu
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('.................');
}
Ale dostávám varování:
„navrhnout závorky kolem přiřazení použitého jako pravdivostní hodnota“ pro první řádek, tj. pro smyčku „pro“...může mi někdo pomoci zbavit se tohoto varování. K
kpua
- 25. července 2006
- 8. ledna 2009
Někdy je to však nejjednodušší způsob, jak kódovat to, co máte na mysli (i když si nemyslím, že je to nutně ve vašem příkladu). Když máte přiřazení v příkazu if, GCC obecně očekává něco takového:
Kód: |_+_|
Všimněte si dalších závorek kolem úkolu. GCC doporučuje používat závorky, abyste se vyhnuli následující chybě:
Kód: |_+_|
což by nekontrolovalo, zda je hodnota přiřazená k foo rovna NULL, ale spíše přiřazuje boolean (bar() != NULL) k foo.
Je také obvyklé a obecně jasnější mít tam explicitní booleovskou kontrolu, takže to je důvod, proč to GCC očekává. S
Sander
na
- 24. dubna 2008
- 9. ledna 2009
Kód: |_+_|
je správně C (přiřaďte b k a a zkontrolujte nenulové), ale nejčastěji to lidé mysleli skutečně
Kód: |_+_|
Protože přiřazení uvnitř if() je výjimkou, GCC na to vydá varování. Také pro budoucí čtenáře vašeho kódu, závorky navíc označují 'ano, tady opravdu myslím zadání'.
Populární Příspěvky