Может ли макрос C содержать временные переменные?

У меня есть функция, которую мне нужно преобразовать в макрос. Функция содержит временные переменные, и я не могу вспомнить, существуют ли какие-либо правила использования временных переменных в макроподстановках.

long fooAlloc(struct foo *f, long size)
{
   long      i1, i2;
   double   *data[7];

   /* do something */
   return 42;
}

МАКРОС Форма:

#define ALLOC_FOO(f, size) \
{\
   long      i1, i2;\
   double   *data[7];\
\
   /* do something */ \
}

Это нормально? (Т.е. никаких неприятных побочных эффектов - кроме обычных: не "безопасный тип" и т. Д.). Кстати, я знаю, что "макросы - это зло" - я просто должен использовать его в этом случае - не так много выбора.

11
задан a3f 30 March 2015 в 12:48
поделиться