Drugo

Mac Opozorilo: predlagajte oklepaje okoli dodelitve, ki se uporablja kot resnična vrednost

R

rubljevaha

Originalni plakat
22. december 2008
  • 8. januar 2009
Živjo
Uporabljam ta delček kode

praznina * ročaj_;

if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('............');

}
sicer če (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('.................');
}

Dobim pa opozorilo:
'predlagajte oklepaje okoli dodelitve, ki se uporablja kot resnična vrednost' za prvo vrstico, tj za zanko 'for' .... mi lahko kdo pomaga, da se znebim tega opozorila.. TO

kpua

25. julij 2006


  • 8. januar 2009
Prvič, na splošno je slaba oblika imeti stranske učinke v stavkih if().

Vendar pa je včasih to najpreprostejši način za kodiranje, kar mislite (čeprav mislim, da v vašem primeru ni nujno). Ko imate nalogo v stavku if, GCC na splošno pričakuje nekaj takega:

Koda: |_+_|
Bodite pozorni na dodatne oklepaje okoli naloge. GCC predlaga, da uporabite oklepaje, da se izognete naslednji napaki:

Koda: |_+_|
ki ne bi preveril, ali je vrednost, dodeljena foo, enaka NULL, temveč bi foo dodelil logično vrednost (bar() != NULL).

Prav tako je običajno in na splošno bolj jasno, da je tam vključena izrecna logična preverjanja, zato GCC to pričakuje. S

Sander

do
24. april 2008
  • 9. januar 2009
Tudi zato, ker izjava

Koda: |_+_|
je pravilen C (prideli b a in preveri, ali ni nič), najpogosteje pa so ljudje res mislili

Koda: |_+_|
Ker je dodelitev znotraj if() izjema, GCC izda opozorilo o tem. Tudi za bodoče bralce vaše kode dodatni oklepaji označujejo 'da, tukaj res mislim na nalogo'.