我真的不明白这里发生了什么。我试图访问.c文件中结构的成员,但当我试图访问结构变量时,它给出了一个“错误类型”。有人知道这是怎么回事吗?
CPU.h头文件:

#ifndef _CPU_H
#define _CPU_H

#include <stdint.h>

typedef struct cpu_registers
{
    union
    {
        struct
        {
            uint8_t f;
            uint8_t a;
        };
        uint16_t af;
    };
    union
    {
        struct
        {
            uint8_t c;
            uint8_t b;
        };
        uint16_t bc;
    };
} cpu_registers;

#endif /* _CPU_H */

CPU.c文件:
#include "CPU.h"

cpu_registers regs;
regs.af = 0xFFFF;

以下是与clang一起编译时出现的错误:
CPU.c:4:1: error: unknown type name 'regs'
regs.af = 0xFFFF;
^
CPU.c:4:5: error: expected identifier or '('
regs.af = 0xFFFF;
    ^
2 errors generated.

最佳答案

可以在函数外部声明和初始化全局变量,但不能对它们执行任何其他操作。
所以,你可以这样做:

cpu_registers regs = { .af = 0xFFFF };

但是,请注意,这不起作用:
int val = 0xFFFF;
cpu_registers regs = { .af = val };

也许有点奇怪,这也不是:
const int val = 0xFFFF;
cpu_registers regs = { .af = val };

08-06 02:19