rublesaha
פוסטר מקורי- 22 בדצמבר 2008
- 8 בינואר 2009
אני משתמש בקטע הקוד הזה
void * handle_;
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('.................');
}
אבל אני מקבל את האזהרה:
'הצע סוגריים מסביב להקצאה המשמשת כערך אמת' עבור השורה הראשונה, כלומר לולאת 'עבור'... מישהו יכול לעזור לי להיפטר מהאזהרה הזו... ל
קפואה
- 25 ביולי 2006
- 8 בינואר 2009
עם זאת, לפעמים זו הדרך הפשוטה ביותר לקוד למה אתה מתכוון (אם כי אני לא חושב שזה בהכרח בדוגמה שלך). כאשר יש לך משימה בהצהרת if, GCC מצפה בדרך כלל למשהו כזה:
קוד: |_+_|
שימו לב לסוגריים הנוספים סביב המטלה. GCC מציע לך להשתמש בסוגריים כדי למנוע את השגיאה הבאה:
קוד: |_+_|
מה שלא יבדוק אם הערך שהוקצה ל-foo שווה ל-NULL, אלא יקצה את הערך הבוליאני (bar() != NULL) ל-foo.
זה גם נהוג ובאופן כללי יותר ברור שהצ'ק הבוליאני המפורש שם, אז זו הסיבה ש-GCC מצפה לזה. ס
מַשׁחֵז
ל
- 24 באפריל, 2008
- 9 בינואר 2009
קוד: |_+_|
זה נכון C (הקצו את b ל-a ובדוק אם לא אפס), אבל לרוב אנשים באמת התכוונו
קוד: |_+_|
מכיוון שהקצאה בתוך ה-if() היא החריג, GCC מוציאה אזהרה לגביה. גם עבור קוראים עתידיים של הקוד שלך, הסוגריים הנוספים מציינים 'כן, אני באמת מתכוון למשימה כאן'.
רשום פופולרי