簡體   English   中英

僅標頭庫不使用標頭保護。 如何在其他頭文件中使用該庫?

[英]Header only library doesn't use header guards. How can I use the library in other header files?

我正在使用標題庫( Nuklear )。 我把它包含在我的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'

我不知道在其他頭文件中從nuklear.h訪問類型的任何其他方法。 有什么幫助嗎?

您可以將該庫的#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

現在看來它確實包含了標題保護 嘗試更新庫。 如果這不起作用提出錯誤,或者更好的是拉取請求。

它是開源軟件,如果你發現錯誤,你可以修復它,而不是試圖解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM