gpt4 book ai didi

c++ - 在 C++ 中的多个文件中包含单个 header 库

转载 作者:行者123 更新时间:2023-11-28 01:17:23 28 4
gpt4 key购买 nike

我正在编写应用程序来转换 SVG自定义结构以供进一步使用。为了将 SVG 文件解析为 C++ 结构,我使用了 nanosvg库,写在单个头文件中(声明和实现)。

实现由 #define NANOSVG_IMPLEMENTATION 启用这使得编译器能够读取实现。

问题是,我想将这个库包含在跨项目的多个文件中(在路径、形状等各种结构中),所以我只是 #include <nanosvg/nanosvg.h> ,但这使得它只导入声明。但是定义 NANOSVG_IMPLEMENTATION使其跨项目声明,所以现在每个#include <nanosvg/nanosvg.h>还包括函数体,这会使编译器抛出很多错误。

我想把类分开,只是为了更容易进一步修改(在项目树中查找文件名比 F12 快得多 - 将所有内容都放在底部,并想知道该文件是否确实包含该类) ,所以我还没有决定将所有内容都合并到一个文件中。有什么方法可以限制#define 的“影响范围”,这样每个文件都会单独加载,或者有什么方法可以“一次性”加载一次吗?

最佳答案

C++(和 C 一样)使用单独编译的模型。每个翻译单元都是独立编译的,然后将结果链接在一起。实际上,每个 .cpp 文件及其所有 header 构成一个翻译单元。

因此,您需要在一个 .cpp 文件中包含一个 #define NANOSVG_IMPLEMENTATION。就这么简单。这可以很简单

#define NANOSVG_IMPLEMENTATION
#include <nanosvg/nanosvg.h>

仅此而已。

关于c++ - 在 C++ 中的多个文件中包含单个 header 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58232738/

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