我的老师告诉我,预处理器命令 #define 是声明全局变量的方法。基本上我使用object-like macros
#define x 3
将 x 声明为全局变量。现在,我习惯于做类似的事情来定义这些变量,我建议不再那样做了:
#include <stdio.h>
const int x = 3;
int main(void){...};
据我所知(让我们考虑一下我是C和编程的新手),如果我们谈论的话,宣布全局变量的两种方式实际上是相同的。该计划如何运作。 假设我有一个像那样的代码:
y = x * 3;
此代码将使用#define x 3
和const int x = 3;
编译并运行完全没有任何问题。现在,我肯定在这里遗漏了一些东西,但我真的看不出有什么不同!有人可以轻轻地告诉我问题的关键点吗?
答案 0 :(得分:1)
#define
用于创建常量,而不是变量,但现在为此目的不赞成。 #define x 3
是一个预处理程序指令,基本上意味着“在源文件中的任何地方用x
替换3
”。这就像在代码编辑器中搜索和替换“匹配整个单词”和“区分大小写”选项一样。
const
创建一个包含地址和范围以及所有内容的合法标识符。即使使用&
(地址)运算符,它也可以像变量一样使用。它只是无法分配给。
答案 1 :(得分:1)
这段小代码的#define和Const值没有区别。但是,如果您要编写性能关键代码,请考虑#define,因为它使您的值全局化,它由编译器预处理而Const具有正常查找。 优点是#define会自动替换名称的每个出现。 如果您在代码中多次使用相同的名称,则会产生冲突。