我正在查看Microsoft GSL中的this macro:
pool.map
让我们简化一下,以忽略我不关心的内容:
#define GSL_CONTRACT_CHECK(type, cond) \
(GSL_LIKELY(cond) ? static_cast<void>(0) \
: gsl::details::throw_exception(gsl::fail_fast( \
"GSL: " type " failure at " __FILE__ ": " GSL_STRINGIFY(__LINE__))))
现在,我会直观地写一些类似的东西:
#define CHECK_1(cond) \
(cond ? static_cast<void>(0) : do_something() )
我的问题:这些包装机制之间有什么区别吗?也许有一些极端的用例,其中一种会导致一些意外的编译错误,而另一种却不会?
注意:
答案 0 :(得分:0)
因此,我的Skillz告诉我foreach (var a in collectionOne)
{
foreach (var b in collectionTwo)
{
if (a == b.Name)
{
//do something
}
}
}
和CHECK_1
应该完全等效,只是样式问题。我想不出为什么可能不是这样。 @NathanOliver似乎同意。