我在试着理解论点预扫描过程。为了正确理解这个过程,我用这个简单的例子编写了一个简单的程序来演示预处理器的行为。error: macro "lose" passed 2 arguments, but takes just 1但是,从文档中我了解到,第一个宏参数是扩展的因此,我的期望是:在第一次扫描之后, bar (foo)应该转换为bar(a,b),而且由于bar只需要一个参数,所以预处理程序应该给出如下错误:
prog.c: In funct
double x = 1, y = 0.5; printf("%lf",r);}
在这里,我希望将宏plus现在,我知道类型的在编译时进行计算,我的理解是,只有当宏包含在第二个宏中时,才不会对其进行计算,而第二个宏直接涉及stringify #和级联##令牌(这是我按照您所看到的方式拆分cat的原因)。如果这是正确的,为什么__typeof__(x)不被预处理器评估成双倍?在我看来,在构建时,这