gpt4 book ai didi

c++ - 使用定义和变量之间的区别

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:26 26 4
gpt4 key购买 nike

如果我有下面的代码:

#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

关于c++ - 使用定义和变量之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25080977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com