c/c++语言开发共享init-declarator-list和GNU GCC属性语法

我正在改进一个内部C语言野牛/基于flex的解析器,其中包括引入正确的__ attribute__支持。

因为我找不到任何描述GNU GCC __ attribute__想法的官方BNF风格的语法(除了https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html文档),我从C中提取点点滴滴通过网络找到的各种实现中的++ x11标准和注释。

我几乎完成了它(至少在解析上面引用的GCC文档中包含的示例时),但是一个特定的例子令我头疼,外部资源没有提示解决方案。

示例如下:

__attribute__((noreturn)) void d0 (void), __attribute__((format(printf, 1, 2))) d1 (const char *, ...), d2 (void); 

附件说明:

属性说明符列表可以使用单个说明符和限定符列表,在多个标识符的声明中以逗号分隔的声明符列表中的声明符(不是第一个)之前出现。 此类属性说明符仅适用于它们出现在其声明符之前的标识符。

因此,引导我解决这个问题:

 init-declarator-list: init-declarator init-declarator-list , attribute-specifier-seq[opt] init-declarator 

我知道它有效,但如果这是解决上述案例的正确方法,我想寻求validation/支持。

谢谢,

沃伊切赫

编辑:这个链接(虽然有点过时)给出了一个像我一样的解决方案: http : //plg.uwaterloo.ca/~cforall/gcc.y奇怪的是,我之前没有偶然发现它,只是在我做的时候搜索__ extension__关键字。

    早期版本的GCC 2.XX过去依赖于野牛进行解析。 因此,下载旧版本可以为您提供所需的内容。

    请注意新的GCC版本引入了新属性……

      以上就是c/c++开发分享init-declarator-list和GNU GCC属性语法相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560205.html

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

      精彩推荐