【发布时间】:2013-10-17 08:27:49
【问题描述】:
不是计算机科学背景,当涉及到宏时,我对模板有点困惑:
考虑以下代码:
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)。
【问题讨论】:
-
不知道为什么这个问题被否决了。看到有多少不好的答案,显然让很多人感到困惑,包括那些认为他们知道这是如何工作的人。