enum跟define的区别
enum和define的区别?
#define 的宏会在预处理时替换, enum却不会替换,那enum定义也不占用空间, 那enum是如何工作的?
gcc -E -P enum.c
/*****************************************************************************************/
gcc -E -P enum.c
------解决方案--------------------
enum和define都是高级语言层面的东西
编译过之后,他们都是常数……
所以,不用太纠结,知道怎么用就行了
------解决方案--------------------
#define N 10
宏定义是在预处理的时候将所有的N替换为10,预处理是在编译之前。
而enum是在编译的时候,进行替换。
处理的时机不一样,但均不占用内存空间
------解决方案--------------------
宏不是个东西.只是替换.
enum 是一个实体.enum 的值也不保存在内存中.
内存不能解释的C 语言现象多了去了..
enum 是根据C 语言的要求工作的.
或者说间由C语言的机制驱动的.
#define 的宏会在预处理时替换, enum却不会替换,那enum定义也不占用空间, 那enum是如何工作的?
/* enum.c */
#if 1
#define ONE (1)
#else
enum Tags
{
ZERO,
ONE,
TWO
};
#endif
int main()
{
int x = ONE;
return 0;
}
gcc -E -P enum.c
int main()
{
int x = (1);
return 0;
}
/*****************************************************************************************/
/* enum.c */
#if 0 /* Change */
#define ONE (1)
#else
enum Tags
{
ZERO,
ONE,
TWO
};
#endif
int main()
{
int x = ONE;
return 0;
}
gcc -E -P enum.c
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语言的机制驱动的.