rublesaha
Originalaffisch- 22 december 2008
- 8 januari 2009
Jag använder det här kodavsnittet
void * handtag_;
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('.................');
}
Men jag får varningen:
'föreslå parenteser runt tilldelningen som används som sanningsvärde' för den första raden, dvs för 'för'-slingan....kan någon hjälpa mig att bli av med denna varning.. TILL
kpua
- 25 juli 2006
- 8 januari 2009
Men ibland är det det enklaste sättet att koda vad du menar (även om jag inte nödvändigtvis tror att det är i ditt exempel). När du har en uppgift i ett if-uttalande förväntar sig GCC i allmänhet något i stil med detta:
Kod: |_+_|
Lägg märke till de extra parenteserna runt uppgiften. GCC föreslår att du använder parenteserna för att undvika följande fel:
Kod: |_+_|
som inte skulle kontrollera att värdet som tilldelats foo är lika med NULL, utan snarare tilldelar boolean (bar() != NULL) till foo.
Det är också vanligt och generellt sett mer tydligt att ha den explicita booleska kontrollen där, så det är därför GCC förväntar sig detta. S
Sander
till
- 24 april 2008
- 9 januari 2009
Kod: |_+_|
är korrekt C (tilldela b till a och kontrollera om det inte är noll), men oftast menade folk verkligen
Kod: |_+_|
Eftersom tilldelning i if() är undantaget utfärdar GCC en varning om det. Även för framtida läsare av din kod indikerar de extra parenteserna 'ja, jag menar verkligen uppdrag här'.
Populära Inlägg