#define NUM_PARCMD_INPUT strlen(CMD_PARCMD_INPUT)
strlen是函数,在编译时不会被优化,执行NUM_PARCMD_INPUT仍会产生调用strlen函数的开销。
#define NUM_PARCMD_INPUT sizeof(CMD_PARCMD_INPUT)-1
sizeof是标识字,不是函数,标识字与常量会被编译器优化。
对于标识字、常量,编译器在编译时就知道他是什么,所以能提前优化;
而函数只是一个“地址”,需要CPU运行时才知道执行什么指令,所以编译器编译时无法提前优化。
#define NUM_PARCMD_INPUT strlen(CMD_PARCMD_INPUT)
strlen是函数,在编译时不会被优化,执行NUM_PARCMD_INPUT仍会产生调用strlen函数的开销。
#define NUM_PARCMD_INPUT sizeof(CMD_PARCMD_INPUT)-1
sizeof是标识字,不是函数,标识字与常量会被编译器优化。
对于标识字、常量,编译器在编译时就知道他是什么,所以能提前优化;
而函数只是一个“地址”,需要CPU运行时才知道执行什么指令,所以编译器编译时无法提前优化。
举报