gpt4 book ai didi

c - 如何在另一个头文件中包含c头文件?

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

我正在使用 curses 库编写一个 c 程序,并希望创建一些反射(reflect)我的应用程序 UI 的结构。

这是我的 app.c 文件

#include <stdlib.h>
#include <stdio.h>
#include "screen.h"

int main() {
struct screen scr = {
.win1 = {
.title = "win1"
},
.win2 = {
.title = "win2"
}
};
}

这是screen.h

#ifndef SCREEN_H
#define SCREEN_H

#include "window.h"

struct screen {
struct window win1;
struct window win2;

struct window *focused;
};

#endif

这是window.h

#ifndef WINDOW_H
#define WINDOW_H

#include "screen.h"

struct window {
char *title;
void (*handle_key_event)(struct screen*);
};

#endif

我的窗口结构句柄方法必须接收对屏幕的引用,以便能够在某些特定情况下更改聚焦窗口。但是当我编译这个时,我收到了警告

window.h:8:34: warning: its scope is only this definition or declaration, 这可能不是你想要的

这是因为它没有看到屏幕声明。如何解决这个问题?

最佳答案

警告是当对结构的第一个引用在其他内容中时。

struct screen;放在struct window的声明之上。

头文件的循环依赖是个坏主意。考虑重构。您不需要结构的定义来声明指向它的指针。前向声明就足够了。

关于c - 如何在另一个头文件中包含c头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55340259/

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