#define到底有什么用?
What exactly is #define useful for?
现在,请原谅我,我是c++的新手。在学习c++的在线教程时,它提到#define
的全部用途是定义一个常量,就像这样。
#define RANDOM_CONSTANT 288
我困惑的是,为什么不能通过创建这样的变量来完成呢?
int RANDOM_CONSTANT = 288;
除了定义常量,#define
还有其他适用的用途吗?
#define
用于定义预处理器执行的一些文本替换。如果你写
#define foo 417
,然后在程序中引用foo
,标识符foo
的所有实例将变成数字417
。(例如,foo4
将保持为foo4
)
#define twice(x) x,x
则程序中出现的twice(417)
将变成417,417
。
如果我是你,我就不会在这个阶段太过担心。
#define
允许您在编译之前更改环境。例如,你可以使用#if RANDOM_CONSTANT
来修改编译的代码。
这是非常有用的,以便您可以有条件地编译,例如,基于某些内容是否为#define
d调试功能。
#define
定义宏,而不是常量。例如,#define
可能具有某些参数:
#define A(i) printf("%d", i)
这里似乎有两个问题需要解决:
-
#define
有什么用? - 为什么使用常量而不是变量?
这些问题的答案是:
-
#define
可以做更复杂的事情,而不仅仅是用名称替换数字。它可以接受参数。例如:#define getmax(a,b) a>b?a:b
不只是用名称替换数字。 -
两部分:首先,常量不能被程序编辑(因此得名;)),所以这在某种程度上是一种安全保护。其次,它是预编译的,而不是一个变量,所以它不占用存储空间,也不需要查找,使其更高效。
相关文章:
- 以下 C++ 代码用于 -> "#define idiv(a, b) (((a) + (b) / 2) / (b))" 是什么?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- "#define X X"是什么意思?
- 在这种情况下,#define 的作用是什么?
- 这个省略号在 c++ 中是什么:#define MBGL_DEFINE_ENUM(T,值...)?
- 如果使用#Define而没有任何分配值,它将做什么
- 什么是 #define _WIN32_DCOM A 在 Visual C++ 项目中
- #define 和创建普通类型有什么区别
- 这个宏是什么意思?#define 未使用(x) ((x)=(x))
- 如果你只有一个标识符,#define 做什么
- 宏字符串:#define __T(x) x 是什么意思?和__T(#x)
- #define X X在C中有什么作用
- #include<> 和 #define " " 有什么区别
- #define到底有什么用?
- 用空括号定义会发生什么?例:#define FOO()
- #define在c++中主要用于什么?
- #define 语句末尾的"\"是什么意思?
- 当只有 2 个部分时,#define 的含义是什么?
- #ifndef #define 指令是什么意思
- 有什么理由在dll中定义类型吗?比如#define MODULE_NAME_INT8 __int8