Czytam kod źródłowy. I to nie tylko kod źródłowy, ale również wiele innych, korzystać z tego rodzaju programowania:Po co używać zdefiniować słowo kluczowe do definiowania funkcji
#define DO_BINOP(FN_NAME,TFLAG,OPER) \
void FN_NAME (bigint_stack &stack) { \
bigint right = stack.front(); \
stack.pop_front(); \
TRACE (TFLAG, "right = " << right); \
bigint left = stack.front(); \
stack.pop_front(); \
TRACE (TFLAG, "left = " << left); \
bigint result = left OPER (right); \
TRACE (TFLAG, "result = " << result); \
stack.push_front (result); \
}
DO_BINOP(do_add, '+', + )
Używają define
zdefiniować długo długi łańcuch, który działa jako funkcja. Nie wiem, jaką korzyść z tego wynika, ponieważ w ten sposób program jest trudniejszy w czytaniu i trudniejszy w debugowaniu. Jestem nowy w C, więc myślę, że ta metoda musi przynieść jakieś korzyści, prawda?
Dzięki.
W ten sposób można zdefiniować wiele funkcji różniących się tylko nazwą i operacją, używając tylko jednego wywołania makra dla każdej instancji. –
@MadScienceDreams Makro * definiuje * funkcję po wywołaniu (zamiast rozszerzania do wyrażenia, jako funkcji złego człowieka), tak więc w tym przypadku nie ma powodu związanego z inliningiem. – delnan