我必须定义一个24位数据类型。我使用char[3]来表示该类型。我可以输入defchar[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,因为后者具有实现定义的签名。

09-11 13:18