こんにちはビットフィールドの静的キャスト作業は?ここで私は32ビットのロングデータのビットフィールドを作成して、私はそれをu32にキャストしようとしています。ビットフィールドに対してstatic_castを使用できますか?
void CO2_SpiDriver::CreateBuffer() {
//#[ operation CreateBuffer()
typedef struct scr_t
{
union {
u32 data;
struct {
u8 CRC : 4;
u16 Datatosend : 16;
u8 DataLengthCode : 2;
u8 AddressReg : 4;
u8 ReadandWrite : 1;
u8 InstrucCode : 3;
u8 ExtChipId : 2;
};
};
} scr_t;
//set of data bits
scr_t se;
se.CRC = 0x00; //CRC BITS 0 to 3
se.Datatosend = 0x0000000000000000; //Data bits 19 to 4
se.DataLengthCode = 0x00; //DLC bits 21 and 20
se.AddressReg = 0x00; // SMP580 registers to access 25-22
se.ReadandWrite = 0x01; //Read|Write Reg 26
se.InstrucCode = 0x5; //InstrCode 29-27
se.ExtChipId = 0x2; //ExtChipId 31-30
static_cast<u32>(se)
ここでは、scr_tをu32にキャストできないというエラーが表示されます。誰でも提案をすることができます
* correction * static_cast(se) –
'static_cast'は_related_タイプでのみ動作します。 – user0042
'se.data'はすでに' u32'です。 – tkausl