Ander

Mac-waarschuwing: stel haakjes voor rond opdracht die als waarheidswaarde worden gebruikt

R

rublesaha

originele poster
22 december 2008
  • 8 januari 2009
Hoi
Ik gebruik dit codefragment

ongeldig * handvat_;

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

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

Maar ik krijg de waarschuwing:
'suggereer haakjes rond een opdracht die als waarheidswaarde wordt gebruikt' voor de eerste regel, d.w.z. de voor de 'for'-lus .... kan iemand me helpen om van deze waarschuwing af te komen.. TOT

kpua

25 juli 2006


  • 8 januari 2009
Ten eerste is het over het algemeen een slechte vorm om bijwerkingen te hebben in if()-instructies.

Soms is het echter de eenvoudigste manier om te coderen wat u bedoelt (hoewel ik niet denk dat dit in uw voorbeeld noodzakelijk is). Als je een opdracht in een if-statement hebt, verwacht GCC over het algemeen zoiets als dit:

Code: |_+_|
Let op de extra haakjes rond de opdracht. GCC raadt u aan de haakjes te gebruiken om de volgende fout te voorkomen:

Code: |_+_|
die niet zou controleren of de waarde die aan foo is toegewezen gelijk is aan NULL, maar eerder de boolean (bar() != NULL) toewijst aan foo.

Het is ook gebruikelijk en over het algemeen duidelijker om de expliciete boolean check-in daar te hebben, dus daarom verwacht GCC dit. S

Schuurmachine

tot
24 april 2008
  • 9 januari 2009
Het is ook omdat de verklaring

Code: |_+_|
is correct C (wijs b toe aan a en controleer op niet-nul), maar meestal meenden mensen het echt

Code: |_+_|
Aangezien toewijzing binnen de if() de uitzondering is, geeft GCC hier een waarschuwing over. Ook voor toekomstige lezers van je code, geven de extra haakjes aan 'ja, ik bedoel hier echt opdracht'.