gpt4 book ai didi

c - 在另一个文件中使用没有结构名称的结构作为外部

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

我正在使用 xv6,并且有一个包含以下内容的 c 文件:

struct {
struct spinlock lock;
char buf[INPUT_BUF];
uint r; // Read index
uint w; // Write index
uint e; // Edit index
} input;

我不想编辑这个文件,但我确实想在我制作的另一个文件中使用 input。我不知道该怎么做,extern inputextern struct input 等外部声明不起作用

最佳答案

如果不编辑文件,就无法正确地做到这一点;两个不同的未标记结构被认为是不同的类型。

在另一个文件中重复结构定义可能“有效”,但这不符合 C 标准。

将此文件更改为 struct input_t { 等,并使另一个文件执行 extern struct input_t { ... } input;

当然,最好将结构体定义(以及它所依赖的任何定义,例如 spinlockINPUT_BUF)放在一个公共(public)头文件中,这是为了防止ODR 违规。如果你不这样做,那么要非常小心这两个文件都使用完全相同的结构定义。例如,如果 INPUT_BUF 彼此不同,则会导致未定义的行为。

关于c - 在另一个文件中使用没有结构名称的结构作为外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859837/

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