为什么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 ';'.
为什么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 将允许类(或枚举)定义没有尾随分号。