Cits

Brīdinājums Mac datorā: iekavas ap uzdevumu, ko izmanto kā patiesības vērtību

R

rublesaha

Oriģinālais plakāts
2008. gada 22. decembris
  • 2009. gada 8. janvāris
Sveiki
Es izmantoju šo koda fragmentu

void * rokturis_;

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

Bet es saņemu brīdinājumu:
'Ieteikt iekavas ap piešķiršanu, ko izmanto kā patiesības vērtību' pirmajai rindai, t.i., cilpai 'for'... vai kāds var man palīdzēt atbrīvoties no šī brīdinājuma. UZ

kpua

2006. gada 25. jūlijs


  • 2009. gada 8. janvāris
Pirmkārt, parasti ir slikta forma, ja if() paziņojumos ir blakusparādības.

Tomēr dažreiz tas ir vienkāršākais veids, kā kodēt to, ko jūs domājat (lai gan es nedomāju, ka tas obligāti ir jūsu piemērā). Ja jums ir uzdevums if paziņojumā, GCC parasti sagaida kaut ko līdzīgu:

Kods: |_+_|
Ievērojiet papildu iekavas ap uzdevumu. GCC iesaka izmantot iekavas, lai izvairītos no šādas kļūdas:

Kods: |_+_|
kas nepārbauda, ​​vai foo piešķirtā vērtība ir vienāda ar NULL, bet gan piešķirtu būla vērtību (bar() != NULL) vērtībai foo.

Ir arī ierasts un parasti ir daudz skaidrāk ievadīt skaidru Būla vērtību, tāpēc GCC to sagaida. S

Sanders

uz
2008. gada 24. aprīlis
  • 2009. gada 9. janvāris
Tas ir arī tāpēc, ka paziņojums

Kods: |_+_|
ir pareizs C (piešķirt b a un pārbaudiet, vai tas nav nulle), bet visbiežāk cilvēki patiešām domāja

Kods: |_+_|
Tā kā piešķiršana if() ietvaros ir izņēmums, GCC izdod par to brīdinājumu. Arī nākamajiem jūsu koda lasītājiem papildu iekavas norāda 'jā, es tiešām domāju norīkojumu šeit'.