为什么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字很实惠
我收到一条来自 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字很实惠