ビットフィールド(全部で32ビット幅)を持つ構造体を持っていて、32ビットの変数を持っています。私は構造体に変数の値を代入しようとすると、私はエラーました:ビットフィールドを持つ構造体に値を割り当てる方法は?
error: conversion from ‘uint32_t {aka unsigned int}’ to non-scalar type ‘main()::CPUID’ requested.
struct CPUIDregs
{
uint32_t EAXBuf;
};
CPUIDregs CPUIDregsoutput;
int main() {
struct CPUID
{
uint32_t Stepping : 4;
uint32_t Model : 4;
uint32_t FamilyID : 4;
uint32_t Type : 2;
uint32_t Reserved1 : 2;
uint32_t ExtendedModel : 4;
uint32_t ExtendedFamilyID : 8;
uint32_t Reserved2 : 4;
};
CPUID CPUIDoutput = CPUIDregsoutput.EAXBuf;
を使用すると、最短の方法でそれを行うにはどのように任意のアイデアを持っていますか?ありがとう
P.S.もちろん、私は実際のコードでEAXのより適切な価値を持っていますが、ここでは影響しないと思います。
ここでは 'struct'ではなく' union'が必要な場合があります。それ以外の場合は、構造体内の各変数のみを個別に設定することができます。 'CPUID CPUIDoutput = EAX;'あなたは 'CPUIDoutput.stepping = EAX;'を実行しなければなりません。 – andre