rublesaha
Оригинален плакат- 22 декември 2008 г
- 8 януари 2009 г
Използвам този фрагмент от код
празно * дръжка_;
if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('............');
}
иначе ако (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('.................');
}
Но получавам предупреждението:
„предложете скоби около присвояването, използвано като стойност на истината“ за първия ред, т.е. за цикъла „for“... може ли някой да ми помогне да се отърва от това предупреждение.. ДА СЕ
kpua
- 25 юли 2006 г
- 8 януари 2009 г
Въпреки това, понякога това е най-простият начин да кодирате това, което имате предвид (въпреки че не мисля, че е задължително във вашия пример). Когато имате задание в оператор if, GCC обикновено очаква нещо подобно:
Код: |_+_|
Обърнете внимание на допълнителните скоби около заданието. GCC ви предлага да използвате скоби, за да избегнете следната грешка:
Код: |_+_|
което няма да проверява дали стойността, присвоена на foo, е равна на NULL, а по-скоро присвоява булевата (bar() != NULL) на foo.
Също така е обичайно и като цяло по-ясно да има изрична булева проверка там, така че ето защо GCC очаква това. С
Сандър
да се
- 24 април 2008 г
- 9 януари 2009 г
Код: |_+_|
е правилно C (присвойте b на a и проверете за ненула), но най-често хората наистина имаха предвид
Код: |_+_|
Тъй като присвояването вътре в if() е изключение, GCC издава предупреждение за това. Също така за бъдещи читатели на вашия код, допълнителните скоби показват „да, тук наистина имам предвид задание“.
Популярни Публикации