У меня проблема с макросом m4. Макрос
define(BARRIER, `
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&$1,$2,$3);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&$1,$2,$3);
#endif
')
и в моем файле .C у меня есть
BARRIER(Global->start, P, MyNum)
, где Global->start
и P
— глобальные, а MyNum — локальная переменная.
Но когда я выполняю
m4 macrosfile.m4 sourcefile > outputfile
в выходном файле есть это:
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&Global->start,P,);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&Global->start,P,);
Что-то не так с моим макросом или просто ограничение?
Заранее спасибо.
m4
в качестве препроцессора для C? Насколько мне известно, C не имеет встроенного препроцессора?-) - person Jens Gustedt   schedule 15.11.2011