m4 不解析局部变量
我的 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
code> 是全局变量,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,);
我的宏有问题,或者只是一个限制?
提前致谢。
I have a problem with an m4 macro. The macro is
define(BARRIER, `
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&$1,$2,$3);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&$1,$2,$3);
#endif
')
and in my .C file i have
BARRIER(Global->start, P, MyNum)
where Global->start
and P
are globals and MyNum a local variable.
But when I execute
m4 macrosfile.m4 sourcefile > outputfile
in the output file there is this:
#if defined USE_PTHREAD_BARRIERS
barrier_wait(&Global->start,P,);
#elif defined (USE_CENTRALIZED_BARRIERS)
central_barrier(&Global->start,P,);
Something wrong with my macro, or just a limitation?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试将:更改
为:
对于我来说,我会尝试使用 X-Macro< /a> 或类似的东西:
...
You could try changing:
to:
As for me, I'd try and avoid m4 by using an X-Macro or something like it:
...