使用C代码typedef代替什么优势(如果有的话)#define?
举个例子,使用是否有任何好处
typedef unsigned char UBYTE
Run Code Online (Sandbox Code Playgroud)
过度
#define UBYTE unsigned char
Run Code Online (Sandbox Code Playgroud)
当两者都可以用作
void func()
{
UBYTE byte_value = 0;
/* Do some stuff */
return byte_value;
}
Run Code Online (Sandbox Code Playgroud)
显然,预处理器会尝试扩展#define它所看到的任何地方,这不会发生在a typedef,但在我看来,这似乎不是任何特定的优势或劣势; 我想不出如果出现问题,使用不会导致构建错误的情况.
Don*_*ows 23
如果你做一个数组类型的typedef,你会看到区别:
typedef unsigned char UCARY[3];
struct example { UCARY x, y, z; };
Run Code Online (Sandbox Code Playgroud)
用#define做到这一点......不,让我们不去那里.
[编辑]:另一个优点是调试器通常知道typedef但不知道#defines.