我偶然发现了一些与 C++11 PEG 库PEGTL一起发生的行为。不幸的是,我无法在库函数/模板之外重现这种行为。这发生在 Netbeans
一个最小的示例如下所示:
include <tao/pegtl.hpp>
using namespace tao::TAOCPP_PEGTL_NAMESPACE;
struct foo : istring<'f','o','o'> {};
struct bar : TAOCPP_PEGTL_ISTRING("foo") {};
struct foo2 : istring<'f','o','o'> {};
TAOCPP_PEGTL_ISTRING 是一个宏定义,扩展为 istring<>,因此 TAOCPP_PEGTL_ISTRING("foo") 与 istring<'f','o','o'> 相同。GCC对此没有问题,但是一旦我尝试使用这个宏,它就会说
unexpected token: {
unexpected token: }
unknown identifier bar
下面的每一行也会出错。
- struct foo 行很好
- 结构条线是发生错误的地方
- struct foo2 会很好,但由于 struct bar 行产生错误,它也显示错误
这是我的系统/Netbeans 信息:
Product Version: NetBeans IDE 8.2 (Build 201609270201)
Updates: NetBeans IDE is updated to version NetBeans 8.2 Patch 2
Java: 1.8.0_101; Java HotSpot(TM) 64-Bit Server VM 25.101-b13
Runtime: Java(TM) SE Runtime Environment 1.8.0_101-b13
System: Linux version 4.13.0-36-generic running on amd64; UTF-8; en_US (nb)