首先,定义两个无括号的常量表达式是我的错误:
#define BIG_INTERVAL 60 * 60 * 1000
#define SMALL_INTERVAL 1 * 1000
int i = 1;
if (i >= BIG_INTERVAL / SMALL_INTERVAL - 1)
{
printf("Oops!\n");
}
在宏定义展开后的if语句是if(i >= 60 * 60 * 1000 / 1 * 1000 - 1)
。这并不是我的意图。但是如果我写
if (i >= 3600000000 - 1)
,则会发现一些奇怪的事情。它是错误的。
60 * 60 * 1000 / 1 * 1000 - 1
的类型是什么?是int
吗?
static const int
或者枚举)呢? - jalf#define for_all( iterator_t, it, container ) for ( iterator_t it = (container).begin(); it != (container).end(); ++it )
,用法为:for_all( std::vector<int>::const_iterator, it, v ) std::cout << *it;
简单吧? - David Rodríguez - dribeas