c/c++语言开发共享在无法识别##的编译器上吞并可变宏中的逗号

我需要在C中编写一个variadic宏,它必须带有零个或多个参数。

在gcc中,可以通过在逗号后添加“##”来实现,例如,##____VA_ARGS____在Variadic宏中以零参数的forms回答。

但是,我的构建系统中的编译器(超出我的控制范围)不理解,##语法,因此不会吞下逗号。

我可以使用一种解决方法吗?

谢谢!

    是的,gcc吞下逗号是非标准的,你不应该依赖它。

    使用符合C99的预处理器,您可以通过测试作为空令牌的宏参数来实现类似的效果。 关于这是如何工作的想法,你可以在这里看到,对于一整套预处理器宏来说,这些function的编程很容易,有P99 。

      以上就是c/c++开发分享在无法识别##的编译器上吞并可变宏中的逗号相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(计算机技术网)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/560430.html

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐