【发布时间】:2016-01-13 23:07:03
【问题描述】:
我的老师告诉我,预处理器命令 #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;,这段代码将毫无问题地编译和运行。现在,我肯定在这里遗漏了一些东西,但我真的看不出有什么不同!谁能温和地告诉我这个问题的意义何在?
【问题讨论】:
-
#define x 3不创建全局变量。 -
@immibis 那么它的作用是什么?
-
它定义了一个类似对象的宏。类对象宏不同于全局变量。
标签: c macros global-variables constants c-preprocessor