【发布时间】:2014-01-23 17:25:43
【问题描述】:
我有这样的代码:
#define defaultOnTimer(N, X) \
if (Timers.N) Timers.N --; \
if (!Timers.N) S.X = D.X; \
defaultOnTimer(t1, sig1);
defaultOnTimer(t2, sig2);
defaultOnTimer(t3, sig3);
defaultOnTimer(t4, sig4);
虽然这可行,但我想知道是否可以将 C++ 模板用于相同的工作。 'defaultOnTimer' 将来可能会扩展到其他工作,所以我不想只是根据需要复制它多次,然后不得不查找和修改每一个。
或者这只是一项过于复杂的工作,我应该坚持使用#define 吗?
请注意,S.X 可以是任何类型。
【问题讨论】:
-
没有模板不能做到这一点。如果您愿意稍微更改界面(并且 S 与 D 是同一类型),他们可以做类似的事情。