类型枚举_foo {a} foo的LZZ语法错误
LZZ syntax error for typedef enum _foo { a } foo;
为什么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文档确实说不支持类定义之后的声明符(请参阅受支持构造下的类定义),并给出了一些示例。这同样适用于枚举,尽管没有明确说明。
相关文章:
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 仅让特定类'Fabric'构造类'Foo'及其所有子类的实例
- 反转C++ foo(MyClass &) vs foo(const MyClass &)
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 如何实现这个函数 foo.getSize().x.
- Clearing Class Foo with new(pFoo) Foo()
- 我想知道为什么"std::unique_ptr<int> foo(新 int)"是合法的,因为"std::<int>unique_ptr"要求输入参数类型应该是"int"?
- 使用 G++ 编译时"Undefined Refrence to Foo"
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- foo(void) vs foo(void *)
- 没有用于调用 foo 的匹配函数
- 两种初始化有什么区别:Foo f();Foo f = Foo()
- 有没有办法删除传递给函数"foo(新对象())"的对象?
- std::size_t 还是 std::vector<Foo>::size_type?
- 引用函数如何"int &foo();"工作?
- 为什么int foo()是右值,而int&foo()在这个例子中是左值?
- <<找不到运算符,尽管定义了 Foo 类型的右操作数,但该运算符仍采用类型为 Foo 的右侧操作数
- 为什么海湾合作委员会抱怨"declaration of 'foo' shadows a previous call [-Werror=shadow]"
- 为什么即使"a.foo<0>();"就足够了,"a.template foo<0>();"也允许?
- 类型枚举_foo {a} foo的LZZ语法错误