现在,请耐心等待,我是c++的新手。在关注c++的在线教程时,它提到所有#define
用于定义常量,就像这样。
#define RANDOM_CONSTANT 288
我感到困惑的是,为什么不能通过创建这样的变量来完成它?
int RANDOM_CONSTANT = 288;
除了定义常量之外,#define
是否还有其他适用的用途?
答案 0 :(得分:2)
#define
允许您在编译时更改环境。例如,您可以使用#if RANDOM_CONSTANT
来修改编译的代码。
这非常有用,因此您可以有条件地编译,例如,根据某些事物是否#define
来调试功能。
答案 1 :(得分:2)
#define
定义了MACRO,而不是常量。例如,#define
可能有某些参数:
#define A(i) printf("%d", i)
答案 2 :(得分:2)
#define
用于定义预处理器执行的一些文本替换。如果你写
#define foo 417
然后在您的计划中引用foo
,标识符foo
的所有实例都将转换为数字417
。 (例如,foo4
将保留为foo4
。)
#define twice(x) x,x
然后,您的计划中出现的twice(417)
将变为417,417
。
如果我是你,在这个阶段我不会太担心它。
答案 3 :(得分:1)
这里似乎有两个问题需要解决:
#define
对您有用?答案是:
#define
可以执行更复杂的操作,然后只需用名称替换数字即可。它实际上可以采取参数。例如:#define getmax(a,b) a>b?a:b
不仅仅用名称替换数字。
两部分:首先,程序不能编辑常量(因此名称;))所以这在某种程度上是一种安全防范。其次,它是预编译而不是变量,因此它不占用存储空间,并且不需要查找它使其更有效。