Lain-Lain

Mac Amaran :cadangkan kurungan di sekeliling tugasan yang digunakan sebagai nilai kebenaran

R

rubaha

Poster asal
22 Dis 2008
  • 8 Jan 2009
Hai
Saya menggunakan coretan kod ini

batal * pemegang_;

if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versi/A/DiskArbitration',RTLD_NOW))
{
printf('............');

}
else if (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versi/A/DiskArbitration',RTLD_NOW))
{
printf('.................');
}

Tetapi saya mendapat amaran:
'cadangkan kurungan di sekeliling tugasan yang digunakan sebagai nilai kebenaran' untuk baris pertama i,e untuk gelung 'untuk'....bolehkah seseorang membantu saya untuk menyingkirkan amaran ini.. KEPADA

kpua

25 Jul 2006


  • 8 Jan 2009
Mula-mula, secara amnya ia adalah bentuk yang tidak baik untuk mempunyai kesan sampingan dalam pernyataan if().

Walau bagaimanapun, kadangkala ia adalah cara paling mudah untuk mengekodkan apa yang anda maksudkan (walaupun saya rasa ia tidak semestinya dalam contoh anda). Apabila anda mempunyai tugasan dalam pernyataan if, GCC biasanya menjangkakan sesuatu seperti ini:

Kod: |_+_|
Perhatikan tanda kurungan tambahan di sekeliling tugasan. GCC mencadangkan anda menggunakan kurungan untuk mengelakkan ralat berikut:

Kod: |_+_|
yang tidak akan menyemak nilai yang diberikan kepada foo adalah sama dengan NULL, tetapi tetapkan boolean (bar() != NULL) kepada foo.

Ia juga merupakan kebiasaan dan secara amnya lebih jelas untuk mempunyai semakan boolean yang jelas di sana, jadi itulah sebabnya GCC menjangkakan perkara ini. S

Sander

kepada
24 Apr 2008
  • 9 Jan 2009
Ia juga kerana kenyataan

Kod: |_+_|
adalah betul C (tetapkan b kepada a dan semak bukan sifar), tetapi selalunya orang benar-benar maksudkan

Kod: |_+_|
Memandangkan tugasan di dalam if() adalah pengecualian, GCC mengeluarkan amaran mengenainya. Juga untuk pembaca kod anda pada masa hadapan, tanda kurungan tambahan menunjukkan 'ya, saya benar-benar maksudkan tugasan di sini'.