Lainnya

Peringatan Mac: sarankan tanda kurung di sekitar tugas yang digunakan sebagai nilai kebenaran

R

rubelsaha

poster asli
22 Desember 2008
  • 8 Januari 2009
Hai
Saya menggunakan potongan kode ini

batal * pegangan_;

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

Tapi saya mendapatkan peringatan:
'sarankan tanda kurung di sekitar penugasan yang digunakan sebagai nilai kebenaran' untuk baris pertama yaitu untuk loop 'untuk' .... dapatkah seseorang membantu saya menghilangkan peringatan ini .. KE

kpua

25 Juli 2006


  • 8 Januari 2009
Pertama, memiliki efek samping dalam pernyataan if() umumnya merupakan bentuk yang buruk.

Namun, terkadang ini adalah cara paling sederhana untuk mengkodekan apa yang Anda maksud (walaupun saya tidak berpikir itu dalam contoh Anda). Ketika Anda memiliki tugas dalam pernyataan if, GCC umumnya mengharapkan sesuatu seperti ini:

Kode: |_+_|
Perhatikan tanda kurung tambahan di sekitar tugas. GCC menyarankan Anda menggunakan tanda kurung untuk menghindari kesalahan berikut:

Kode: |_+_|
yang tidak akan memeriksa nilai yang ditetapkan ke foo sama dengan NULL, melainkan menetapkan boolean (bar() != NULL) ke foo.

Itu juga biasa dan umumnya lebih jelas untuk memiliki pemeriksaan boolean eksplisit di sana, jadi itu sebabnya GCC mengharapkan ini. S

Sander

ke
24 April 2008
  • 9 Januari 2009
Itu juga karena pernyataan

Kode: |_+_|
benar C (tetapkan b ke a dan periksa bukan nol), tetapi paling sering orang benar-benar bermaksud

Kode: |_+_|
Karena penugasan di dalam if() adalah pengecualian, GCC mengeluarkan peringatan tentangnya. Juga untuk pembaca kode Anda di masa mendatang, tanda kurung tambahan menunjukkan 'ya, maksud saya tugas di sini'.