我想知道为什么_wassert函数包含在(..,0)
中 ( _wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__)
,0)
答案 0 :(得分:0)
断言失败时调用_wassert
函数。这将:
abort
(或exit
或某些此类函数以结束执行。)因此它不会返回并被宣布为无效函数(如T.C.在评论中所述)。 (必须声明无效,否则编译器会抱怨它没有返回值)。
然后当它在表达式test || _wassert(...)
中使用时,编译器会抱怨,因为它不会进行类型检查。 ||
需要两种数字类型。所以解决方案是让右手表达式返回一个int(即使它永远不会因abort
而返回),为此他们使用逗号运算符。