我正在使用curses库编写一个ac程序,并希望创建一些反映我的应用程序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, which is probably not what you want
这是因为它看不到屏幕声明。如何解决这个问题?
警告是在对结构的第一个引用位于其他内部时。
放在struct screen;
的声明上方struct window
。
头文件的循环依赖关系不是一个好主意。考虑重构。您不需要结构的定义即可声明指向它的指针。向前声明就足够了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句