首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

enum和define的区别?解决方法

2012-05-13 
enum和define的区别?#define 的宏会在预处理时替换, enum却不会替换,那enum定义也不占用空间, 那enum是如

enum和define的区别?
#define 的宏会在预处理时替换, enum却不会替换,那enum定义也不占用空间, 那enum是如何工作的?

C/C++ code
/* enum.c */#if 1#define ONE (1)#elseenum Tags{        ZERO,        ONE,        TWO};#endifint main(){        int x = ONE;        return 0;}


gcc -E -P enum.c

C/C++ code
int main(){ int x = (1); return 0;}

/*****************************************************************************************/
C/C++ code
/* enum.c */#if 0  /* Change */#define ONE (1)#elseenum Tags{        ZERO,        ONE,        TWO};#endifint main(){        int x = ONE;        return 0;}


gcc -E -P enum.c

C/C++ code
enum Tags{ ONE, TWO, ThREE};int main(){ int x = ONE; return 0;}


[解决办法]
enum和define都是高级语言层面的东西

编译过之后,他们都是常数……

所以,不用太纠结,知道怎么用就行了

[解决办法]
#define N 10 
宏定义是在预处理的时候将所有的N替换为10,预处理是在编译之前。
而enum是在编译的时候,进行替换。
处理的时机不一样,但均不占用内存空间
[解决办法]
宏不是个东西.只是替换.

enum 是一个实体.enum 的值也不保存在内存中.

内存不能解释的C 语言现象多了去了..


enum 是根据C 语言的要求工作的.

或者说间由C语言的机制驱动的.

热点排行