gpt4 book ai didi

c - 为什么在尝试使用 .c 文件中 header 中的结构时出现类型错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:33:19 24 4
gpt4 key购买 nike

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

关于c - 为什么在尝试使用 .c 文件中 header 中的结构时出现类型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com