不是计算机科学背景,当涉及宏时,我对模板有点困惑:
考虑以下代码:
template <int Signal1, int Signal2>
void my_add(int & x, int y)
{
#if Signal1==1||Signal2==1
x+=y;
#endif
}
//And call the template, e.g.: my_add<1, 1>(x, 3);
问题是,#if
宏似乎没有按预期工作,好像#if
宏测试总是返回false
,所以结果是my_add<1,1>
什么都不做。
任何人都可以解释为什么会这样?( MSVC 2012
)。