为什么gtest不喜欢我的表情?

时间:2016-03-26 20:02:31

标签: c++ googletest

我遇到了来自gtest的奇怪错误消息。编译

EXPECT_EQ(MyVal,0xe-2);

导致错误消息:

unable to find numeric literal operator 'operator"" -2'

,而

EXPECT_EQ(MyVal,0xe -2);

EXPECT_EQ(MyVal,0xf-2);

编译好。有任何想法吗? (也许它试图取幂?)

1 个答案:

答案 0 :(得分:2)

这是一个经典的C / C ++问题。

0xe-2pp-number预处理号)令牌,因为:

  • 以数字开头,

  • 由数字和字母组成,

  • 除外
  • -后的e

所以它是一个单一的标记。但是,令牌与任何数字文字都不对应,因此在预处理后它不是有效的令牌。

相比之下,0xf-2是三个令牌:0xf-2,并且这三个令牌在预处理后都有效。

在运营商周围放置空白区域总是更好。空白字符非常实惠。