enum和define的区别?解决方法
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++ codeint 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++ codeenum 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语言的机制驱动的.