В С++, Мне нужно определить макрос. Этот макрос будет принимать в качестве параметра "блок" кода.
Можно ли безопасно использовать несколько строк кода в качестве параметра макрофункции?
Я спрашивал себя:
- - это следующий код, действительный, определенный как стандарт, как в "кросс-платформенной"?
- Есть ли лучший способ сделать то же самое (я не могу использовать функцию шаблона там, потому что мне нужен контекст).
#define MY_MACRO( expr ) DOSOMETHING( (expr) ); DOANOTHERTHING( (expr) ); // etc...
int my_function() {
int o = RandomNumber();
MY_MACRO(
int k = AFunction();
k++;
AnotherFunction( k + o ); // here I need to keep the context of the call
);
}
Мы не можем использовать функторы, потому что нам нужно иметь доступ к контексту вызова. Мы не можем использовать lambda (snif), потому что мы используем старый компилятор, который его не предоставляет (и мы не можем его изменить).