rublesaha
Poster original- 22 decembrie 2008
- 8 ianuarie 2009
Folosesc acest fragment de cod
void * mâner_;
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('.................');
}
Dar primesc avertismentul:
„Sugerează paranteze în jurul atribuirii folosite ca valoare de adevăr” pentru prima linie, adică bucla „for”... poate cineva să mă ajute să scap de acest avertisment. LA
kpua
- 25 iulie 2006
- 8 ianuarie 2009
Cu toate acestea, uneori este cel mai simplu mod de a codifica ceea ce vrei să spui (deși nu cred că este neapărat în exemplul tău). Când aveți o sarcină într-o declarație if, GCC se așteaptă, în general, la ceva de genul acesta:
Cod: |_+_|
Observați parantezele suplimentare din jurul temei. GCC vă sugerează să utilizați parantezele pentru a evita următoarea eroare:
Cod: |_+_|
care nu ar verifica dacă valoarea atribuită lui foo este egală cu NULL, ci mai degrabă atribuie booleanul (bar() != NULL) lui foo.
De asemenea, este obișnuit și, în general, mai clar să existe verificarea booleană explicită acolo, așa că de aceea GCC se așteaptă la asta. S
Sander
la
- 24 aprilie 2008
- 9 ianuarie 2009
Cod: |_+_|
este corect C (atribuiți b la a și verificați dacă nu este zero), dar cel mai adesea oamenii au vrut să spună cu adevărat
Cod: |_+_|
Deoarece atribuirea în interiorul if() este o excepție, GCC emite un avertisment cu privire la aceasta. De asemenea, pentru viitorii cititori ai codului dvs., parantezele suplimentare indică „da, chiar mă refer la atribuire aici”.
Posturi Populare