Code: Select all
#define IMG_SP_EMPTY IMG_SP_EMPTY_SPACE
Moderators: Flumminator, Zomis
Code: Select all
#define IMG_SP_EMPTY IMG_SP_EMPTY_SPACE
Code: Select all
SET_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? CH_EVENT_VAR(e,c) = (v) : 0)
Code: Select all
(element_info[e].change->has_event[c]) = (v)
Code: Select all
k = (i < 8) ? i=5 : 0; // 0 is assigned to k (if i >= 8)
(i < 8) ? i=5 : 0; // 0 do nothing
if (i < 8) {
i=5;
} else {
0;
}
dark corners after 10 years of development (or may be for the future?)If they're not used, then why are they there?
Not for "defines"Doesn't the C compilator complain also when it's not used?
Code: Select all
#define QUAD(x) x*x
a = QUAD(5); // leads to "a = 5*5;"
a = QUAD(4+2); // leads to "a = 4+2*4+2;"
// this is not what you expect !!
// the result is not 36
// it is 14 !!
// so better is this
#define QUAD(x) ((x)*(x))
a = QUAD(4+2); // now leads to "a = ((4+2)*(4+2));"
// result is now 36
// but be warned you can have sideeffects
a = QUAD(x++); // leads to "a=((x++)*(x++))"
guess what happen if x = 3 at beginning.
Code: Select all
#define CH_EVENT_VAR(e,c) (element_info[e].change->has_event[c])
#define CH_ANY_EVENT_VAR(e,c) (element_info[e].has_change_event[c])
#define SET_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \
CH_EVENT_VAR(e,c) = (v) : 0)
#define SET_ANY_CHANGE_EVENT(e,c,v) (IS_CUSTOM_ELEMENT(e) ? \
CH_ANY_EVENT_VAR(e,c) = (v) : 0)
Sorry, that's wrong!Therefore, "x=3; a=((x++)*(x++))" results in... 3*4 ...