1.编译器处理方式不同 #define:在预编译阶段进行替换,不做数据类型安全检查,只是替换 const:在编译运行阶段使用,会执行类型安全检查,如果出现错误编译器会报错 enum:在程序运行时起作用 2.分配内存不同 #define:在预编译阶段不分配内存,只是进行替换与展开,在于编译之后当有变量调用这个宏时才会分配一份内存, const...
所以
enum类型的变量可用于索引表达式中,并且可用作所有算术和关系运算符的操作数。 枚举提供了#define预处理器指令的替代方法,带来的好处是可为您生成值并遵循一般范围规则。 在ANSI C 中,定义枚举器常量值的表达式始终具有int类型。 这意味着,与枚举变量关联的存储是单个int值所需的存储。 可以在 C 语言允许整数表达式...
使用enum定义常量时,可以方便地添加、删除或修改常量值,不用担心影响其他部分; 使用#define定义常量时,修改常量值可能会导致程序中其他地方的错误,可维护性较差。 综上所述,enum相对于#define来说,可读性和可维护性更好,更容易调试,但是#define定义的常量具有更广的作用域。在实际开发中,可以根据具体情况选择合适的...
enum类型的变量可用于索引表达式中,并且可用作所有算术和关系运算符的操作数。 枚举提供了#define预处理器指令的替代方法,带来的好处是可为您生成值并遵循一般范围规则。 在ANSI C 中,定义枚举器常量值的表达式始终具有int类型。 这意味着,与枚举变量关联的存储是单个int值所需的存储。 可以在 C 语言允许整数表达式...
便于调试,预处理阶段会删除 #define 定义的符号 使⽤⽅便,⼀次可以定义多个常量 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤ 4. 枚举类型的使用 代码语言:javascript 复制 enumColor{RED,GREEN,BLUE};enumColor clr=GREEN;//使用枚举常量给枚举变量赋值 ...
enumcolor1{red,yellow,blue};enumcolor2{red,black,white}; 三,对变量进行赋值 1,使用成员赋值 ⭐C语言中的枚举变量通常只能被赋值为枚举类型中定义的成员。 例如,我们给下面的枚举变量a b c赋值👇🏻 【只能使用成员red yellow blue】 代码语言:javascript ...
if I write "#define"s below of the "enum"s, I don't getting any error. What is the logic behind of this situation? And*_*rsK7 When you do a define the compiler will do a text substitution when it encounters one of the defined symbols ...
当你做一个定义时,编译器会在遇到一个定义的符号时做一个文本替换 所以
💡💡💡在定义常量时,你应该使用全局变量和enum,而不是#define。 除了定义常量,还可以使用#define构建类似函数的代码段,称之为宏(macro)。 NSLog(@"%d is larger",MAX(10,12)); 这里的MAX不是函数,而是一个#define指令: #if!defined(MAX)#define__NSMAX_IMPL__(A,B,L) ({ __typeof__(A) _...