我正在尝试按如下方式调用GoogleTest ASSERT_EQ
宏:
ASSERT_EQ(map<string, string> {
{"a", "x"}, {"b", "y"}
}, some_other_map);
但我似乎无法弄清楚正确的语法(如果它甚至可能)。
想法?
答案 0 :(得分:1)
现在你已经澄清它是一个宏,而不是一个函数,问题是预处理器在语言方面是一个丑陋的疣,它自己的语法并不总是与它的语言兼容。
具体来说,它不会将<
和>
识别为括号,因此它认为有三个以逗号分隔的参数,而不是两个:
map<string
string> {...}
some_other_map
您可以通过在第一个表达式周围加上括号来解决此问题:
ASSERT_EQ((map<string, string> {
{"a", "x"}, {"b", "y"}
}), some_other_map);
一般情况下,尽量避免做任何复杂的宏。这通常是一种痛苦的途径。