如果我有以下代码:
#define POUND_PER_DOLLAR 73
int nPound = 4 * POUND_PER_DOLLAR;
和
int POUND_PER_DOLLAR = 122;
int nPound = 4 * POUND_PER_DOLLAR;
是否存在使用其中一种方法比使用另一种方法更合适的情况?
如果需要地址,则需要一个变量:
void foo(int *);
foo(&POUND_PER_DOLLAR); // must be an lvalue
如果您需要一个常量表达式,则可以使用一个宏(或至少一个常量):
char array[POUND_PER_DOLLAR]; // must be a constant expression
但是,最合适的构造可能是一个常数:
const int kPoundPerDollar = 73;
int nPound = 4 * kPoundPerDollar;
void bar(const int *);
bar(&kPoundPerDollar); // works
char c[kPoundPerDollar]; // also works
template <const int * P> struct X {};
X<&kPoundPerDollar> x; // also works
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句