我必须定义一个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
,因为后者具有实现定义的签名。