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

Why does gtest does not like my expression?

我收到一条来自 gtest 的奇怪错误消息。正在编译

EXPECT_EQ(MyVal,0xe-2);

导致错误消息:

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

EXPECT_EQ(MyVal,0xe -2);

EXPECT_EQ(MyVal,0xf-2);

编译正常。有任何想法吗? (也许它试图求幂??)

这是一个经典的 C/C++ 陷阱。

0xe-2 是一个 pp-number 预处理数 )标记,因为:

  • 以数字开头,

  • 由数字和字母组成,

  • 除外
  • 一个 - 跟随 e.

所以它是一个单一的令牌。但该token不对应任何数字字面量,因此预处理后不是有效token

相比之下,0xf-2是三个token:0xf-2,三个都经过预处理后有效。

最好在运算符周围加上白色 space。白space字很实惠