고차 함수를 시뮬레이션하기 위해 다른 매크로의 인수로 매크로 이름을 지정하는 것이 안전합니까?(상위) 매크로로 어느 정도 할 수 있습니까?
e.e. 나는 발에서 자신을 쏘지 않기 위해 어디에서보아야합니까?
여기에 몇 조각은 다음과 같습니다
#define foreach_even(ii, instr) for(int ii = 0; ii < 100; ii += 2) { instr; }
#define foreach_odd(ii, instr) for(int ii = 1; ii < 100; ii += 2) { instr; }
#define sum(foreach_loop, accu) \
foreach_loop(ii, {accu += ii});
int acc = 0;
sum(foreach_even, acc);
sum(foreach_odd, acc);
일부 응용 프로그램에 대해, 나는 그것을 무엇을 할 수 있는가? :
#define foreach(ii, start, end, step, instr) \
for(int ii = start; ii < end; ii += step) { instr; }
#define foreach_even(ii, instr) foreach(ii, 0, 100, instr)
#define foreach_odd(ii, instr) foreach(ii, 1, 100, instr)
#define sum(foreach_loop, accu) \
foreach_loop(ii, {accu += ii});
int acc = 0;
sum(foreach_even, acc);
sum(foreach_odd, acc);
매크로 내에서 매크로를 정의 할 수 있습니까?
#define apply_first(new_macro, macro, arg) #define new_macro(x) macro(arg,x)