仅标头库不使用标头防护。如何在其他头文件中使用该库?

时间:2019-06-13 20:52:59

标签: c

我正在使用仅标头的库(Nuklear)。我将其包含在我的Error: Column `average.yield` must be length 1 (the group size), not 3文件中,如下所示:

main.c

我想创建一个文件来容纳一些组件,并将代码分成较小的块。我试图通过在组件标头之一中包含#define SDL_MAIN_HANDLED #include <GL/glew.h> #include <SDL2/SDL.h> #include <SDL2/SDL_opengl.h> #define NK_INCLUDE_FIXED_TYPES #define NK_INCLUDE_STANDARD_IO #define NK_INCLUDE_STANDARD_VARARGS #define NK_INCLUDE_DEFAULT_ALLOCATOR #define NK_INCLUDE_VERTEX_BUFFER_OUTPUT #define NK_INCLUDE_FONT_BAKING #define NK_INCLUDE_DEFAULT_FONT #define NK_IMPLEMENTATION #define NK_SDL_GL3_IMPLEMENTATION #include "nuklear.h" #include "nuklear_sdl_gl3.h" 来做到这一点,但遇到了重新声明错误:

nuklear.h

我不知道从其他头文件中的error: redefinition of 'nk_sdl_shutdown' 访问类型的任何其他方法。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

您可以将该库的#include包装在另一个标头中。

#ifndef NUKLEAR_INCLUDED
#define NUKLEAR_INCLUDED

#define NK_INCLUDE_FIXED_TYPES
#define NK_INCLUDE_STANDARD_IO
#define NK_INCLUDE_STANDARD_VARARGS
#define NK_INCLUDE_DEFAULT_ALLOCATOR
#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT
#define NK_INCLUDE_FONT_BAKING
#define NK_INCLUDE_DEFAULT_FONT
#define NK_IMPLEMENTATION
#define NK_SDL_GL3_IMPLEMENTATION
#include "nuklear.h"
#include "nuklear_sdl_gl3.h"

#endif

答案 1 :(得分:1)

现在看起来像it does include header guards。尝试更新库。如果那不起作用,则提交错误或什至更好的拉取请求。

它是开源软件,如果发现错误,可以修复它,而不是尝试解决此问题。