Egyéb

Mac figyelmeztetés: javasoljon zárójeleket az igazságértékként használt hozzárendelés körül

R

rublesaha

Eredeti plakát
2008. december 22
  • 2009. január 8
Szia
Ezt a kódrészletet használom

void * fogantyú_;

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('.................');
}

De kapom a figyelmeztetést:
„Javasljon zárójeleket az igazságértékként használt hozzárendelés körül” az első sorhoz, azaz a „for” ciklushoz... tudna valaki segíteni, hogy megszabaduljak ettől a figyelmeztetéstől? NAK NEK

kpua

2006. július 25


  • 2009. január 8
Először is, általában rossz forma, ha az if() utasításokban mellékhatások vannak.

Néha azonban ez a legegyszerűbb módja annak, hogy kódoljuk, amit gondolsz (bár nem hiszem, hogy a példádban feltétlenül ez van). Ha van hozzárendelése az if utasításban, a GCC általában valami ilyesmit vár el:

Kód: |_+_|
Figyelje meg a feladat körüli extra zárójeleket. A GCC azt javasolja, hogy használja a zárójeleket, hogy elkerülje a következő hibákat:

Kód: |_+_|
amely nem ellenőrzi, hogy a foo-hoz rendelt érték egyenlő-e NULL-lal, hanem a logikai értéket (bar() != NULL) rendeli hozzá a foo-hoz.

Szokásos és általában világosabb is az explicit logikai bejelentkezés, ezért a GCC ezt várja el. S

Sander

nak nek
2008. április 24
  • 2009. január 9
Ez azért is van, mert az állítás

Kód: |_+_|
helyes C (rendelje b-t a-hoz, és ellenőrizze, hogy nem nulla-e), de leggyakrabban az emberek komolyan gondolták

Kód: |_+_|
Mivel az if()-n belüli hozzárendelés a kivétel, a GCC figyelmeztetést ad ki erre. A kód leendő olvasói számára is a plusz zárójelek azt jelzik, hogy „igen, itt tényleg a hozzárendelésre gondolok”.