#define RUN_SOME_STUFF(...) { \
int x = 0; \
printf("[INFO] Do some stuff here ... %d\n", ++x); \
{__VA_ARGS__} \
printf("[INFO] end some stuff here\n"); \
}
Как я это использую:
...
RUN_SOME_STUFF(
{
// middle:
int y;
y = 100;
printf("Middle\n");
});
...
Теперь я знаю, что это (очень) некрасивый макрос, но это главная причина, по которой я прошу помощи.
Первая проблема с этим заключается в том, что, если появляется какой-либо тип ошибки, компилятор покажет последнюю строку макроса как неправильную строку.Распечатки являются лишь примерами для упрощения проблемы (в обоих фрагментах кода), поэтому может быть 20 строк сложного, вложенного кода, в этом случае это очень раздражает.
Второй - __LINE__решена так же неправильно
и я уверен, что есть еще много ...
1. Есть ли способ исправить вышеуказанные проблемы, так чтостроки правильно разрешены?(может быть, какая-то опция компилятора? Я использую VS2008 / 2010)
2. Если нет способа сделать это с помощью макроса "симпатичным" способом, могу ли якакие-либо другие варианты сделать это?Я просто хочу запустить некоторый код «вокруг» (до и после) некоторого другого кода.
Редактировать: Я бы использовал этот макрос часто, всегда с различным «средним» содержимым,поэтому я не могу писать встроенную функцию каждый раз.