0

我偶然发现了一些与 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)
4

0 回答 0