我正在尝试实现一个协议标准,我对它们的条件字段概念有点麻烦.根据某些条件,它们被定义为存在或不存在的字段.他们给出的例子如下:
uint16 Pressure;
enum VehicleType { car = 0, motorbike = 1};
struct TirePressureInfo {
VehicleType type;
select (type)
{
case car:
Pressure frontLeft;
Pressure frontRight;
Pressure rearLeft;
Pressure rearRight;
case motorbike:
Pressure front;
Pressure rear;
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何我都没有意识到要在C中完成这项工作,或者甚至可能.无论如何,我无法想到实现这一点.有一点需要注意的是,这将在Linux内核模块中实现,所以我也有一些限制.
struct {
uint8 protocol_version;
ContentType type;
select (type) {
case unsecured :
opaque data<var>;
case signed, signed_partial_payload,
signed_external_payload:
SignedData signed_data;
case signed_wsa:
SignedWsa signed_wsa;
case encrypted :
EncryptedData encrypted_data;
case crl_request :
CrlRequest crl_request;
case crl :
Crl crl;
case other_value: …Run Code Online (Sandbox Code Playgroud)