rublesaha
Original plakat- 22. december 2008
- 8. januar 2009
Jeg bruger dette kodestykke
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('.................');
}
Men jeg får advarslen:
'foreslå parenteser omkring opgave brugt som sandhedsværdi' for den første linje, dvs. for 'for'-løkken....kan nogen hjælpe mig med at slippe af med denne advarsel.. TIL
kpua
- 25. juli 2006
- 8. januar 2009
Men nogle gange er det den enkleste måde at kode, hvad du mener (selvom jeg ikke tror, det nødvendigvis er i dit eksempel). Når du har en opgave i en if-erklæring, forventer GCC generelt noget som dette:
Kode: |_+_|
Læg mærke til de ekstra parenteser omkring opgaven. GCC foreslår, at du bruger parenteserne for at undgå følgende fejl:
Kode: |_+_|
som ikke vil kontrollere for værdien tildelt foo er lig med NULL, men snarere tildele boolean (bar() != NULL) til foo.
Det er også sædvanligt og generelt mere klart at have det eksplicitte booleske tjek derind, så det er derfor, GCC forventer dette. S
Sander
til
- 24. april 2008
- 9. januar 2009
Kode: |_+_|
er korrekt C (tildel b til a og tjek for ikke-nul), men oftest mente folk virkelig
Kode: |_+_|
Da tildeling inde i if() er undtagelsen, udsender GCC en advarsel om det. Også for fremtidige læsere af din kode angiver de ekstra parenteser 'ja, jeg mener virkelig opgave her'.
Populære Indlæg