类型枚举_foo {a} foo的LZZ语法错误

LZZ syntax error for typedef enum _foo { a } foo;

本文关键字:foo LZZ 语法 错误 枚举 类型      更新时间:2023-10-16

为什么LZZ告诉我typedef enum _foo { a } foo;行有语法错误?

Test.lzz:1:19: Syntax error before '{'.
Test.lzz:1:1: Discarding 'typedef'.
Test.lzz:1:28: Syntax error before ';'.
Test.lzz:1:28: Inserting '<identifier>' before ';'.

来自文档:

与真正的c++解析器不同,Lzz不维护类型和模板名称数据库。Lzz只使用上下文信息进行解析。然而,由于c++语法是模糊的,这种策略在一些上下文中是不合适的;幸运的是,Lzz可以跳过其中的大部分。

此工具不接受c++作为其输入;它接受一种看起来有点像c++的精简语言,并将c++作为输出。如果您想使用它,就必须学习它自己的语言,并希望它足以满足您想要编写的代码。就我个人而言,我建议您坚持使用标准c++,因为该语言有很好的文档并且被广泛理解。

你在c语言的代码中经常看到这种情况。

enum foo { a }

Lzz文档确实说不支持类定义之后的声明符(请参阅受支持构造下的类定义),并给出了一些示例。这同样适用于枚举,尽管没有明确说明。

Lzz允许类(或enum)定义不带后面的分号。