我必须定义一个 24 位数据类型。我正在使用 char[3]
来表示该类型。我可以将 char[3]
类型定义为 type24
吗?我在代码示例中尝试过。我将 typedef char[3] type24;
放在我的头文件中。编译器没有提示它。但是当我在我的 C 文件中定义一个函数 void foo(type24 val) {}
时,它确实报错了。我希望能够定义像 type24_to_int32(type24 val)
这样的函数,而不是 type24_to_int32(char value[3])
。
最佳答案
typedef 将是
typedef char type24[3];
然而,这可能是一个非常糟糕的主意,因为结果类型是一个数组类型,但它的用户不会看到它是一个数组类型。如果用作函数参数,它将通过引用传递,而不是通过值传递,并且它的 sizeof
将是错误的。
更好的解决方案是
typedef struct type24 { char x[3]; } type24;
您可能还想使用 unsigned char
而不是 char
,因为后者具有实现定义的符号。
关于c - typedef 定长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16451225/