我遇到了来自gtest的奇怪错误消息。编译
EXPECT_EQ(MyVal,0xe-2);
导致错误消息:
unable to find numeric literal operator 'operator"" -2'
,而
EXPECT_EQ(MyVal,0xe -2);
和
EXPECT_EQ(MyVal,0xf-2);
编译好。有任何想法吗? (也许它试图取幂?)
答案 0 :(得分:2)
这是一个经典的C / C ++问题。
0xe-2
是pp-number
(预处理号)令牌,因为:
以数字开头,
由数字和字母组成,
-
后的e
。
所以它是一个单一的标记。但是,令牌与任何数字文字都不对应,因此在预处理后它不是有效的令牌。
相比之下,0xf-2
是三个令牌:0xf
,-
和2
,并且这三个令牌在预处理后都有效。
在运营商周围放置空白区域总是更好。空白字符非常实惠。