gpt4 book ai didi

c - m4 不解析局部变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:51 25 4
gpt4 key购买 nike

我的 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->startP 是全局变量,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,);

我的宏有问题,还是只是限制?

提前致谢。

最佳答案

你可以尝试改变:

BARRIER(Global->start, P, MyNum)

到:

BARRIER(`Global->start', `P', `MyNum')

至于我,我会尝试使用 X-Macro 来避免 m4或类似的东西:

#if defined USE_PTHREAD_BARRIERS
#define BARRIER_X(x_, y_, z_) barrier_wait(&x_, y_, z_)
#elif defined (USE_CENTRALIZED_BARRIERS)
#define BARRIER_X(x_, y_, z_) central_barrier(&x_, y_, z_)
#endif

...

BARRIER_X(Global->start, P, MyNum);

关于c - m4 不解析局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com