我真的不明白这里发生了什么。我试图访问.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 };