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

胭脂红

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 C 中包含另一个头文件中定义的结构数组?

Makefile | 对头文件中包含的另一个头文件的依赖

C++ - 在另一个头文件中包含一个头文件以使全局变量可用于数组声明

在 C 或 C++ 中,如何防止头文件中先前的 #define 影响以后包含的另一个头文件?

C编程如何在另一个头文件中打印出结构的元素?

C头文件包含在另一个头文件中,并且都包含在ac文件中

在另一个头文件中包括头文件中的typedef枚举

在C ++中使用另一个头文件中的抽象类

如何从另一个头文件触发插槽

C++ 在两个头文件中包含一个类

如何在另一个类头文件中定义类构造函数?

为什么在另一个头文件中声明结构会导致LNK2001错误?

如何在 C 编程中将两个头文件和 3 个 c 文件链接到一个可执行文件中?

在 VS 2017 中为“便携式”项目包含一个头文件(C++)

如何将一个单独的 Swift 包中的 C 头文件包含到另一个 Swift 包的 C 部分中

来自第二个头文件中的一个头文件的Typedef用法

C ++在另一个类头文件中声明一个类

如何包含另一个项目中的库和头文件?

如何在C ++中将多个头文件导出为单个头文件?

头文件中的#pragma GCC system_header是否扩展到包含它的另一个源文件或头文件中?

为什么我不能将头文件导入一个头文件中的库中?

为什么为ios构建的静态库仅包含一个头文件

如何让一个头文件中的声明访问三个单独的视图控制器?

如何将一个类定义分成2个头文件?

在C中链接多个头文件

您可以在一个库中实现多个头文件吗?

仅包含一个#include-expression一次包含多个头文件吗?

如何检查每个头文件包括必需的包含文件?

在NDK项目上添加另一个C源代码和头文件