gpt4 book ai didi

c++ - 具有 extern #define 和 typedef 结构的静态库

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:44 26 4
gpt4 key购买 nike

我正在尝试制作一个静态库,其中库的某些方面可以在外部定义(在已编译的库代码之外)。

对于函数定义,我可以在库中使用 extern void foo() 声明 毫无问题地编译库,然后在引用静态库的代码。

我还想制作一些静态库中的#define valuestypedef structs,可以在外部进行编辑。

如果我删除了#defines 或typedef 结构声明,那么我将无法编译库。

所有使用 extern 的尝试也都失败了。

这可能吗?如果是这样,我该怎么做?

问候,约翰。

最佳答案

#define 是在编译时处理的,因此您不能在(已编译的)库之外使它们可编辑。

typedefstruct 定义内存布局和这些数据类型的偏移量。这些在编译时处理以在编译代码中插入正确的偏移量以访问成员,因此也在编译时处理并且不能在(编译的)库之外编辑。

您可以将库函数 void * 指针传递给您的数据结构,并传递库函数来处理这些外部定义的数据类型。例如:

void genericSort(void *ArrayToSort, int (*cmp)(void *, void *));

在这里,您向库函数传递一个要排序的数组和一个比较两个元素的函数,而库对这个数组包含的内容一无所知。

关于c++ - 具有 extern #define 和 typedef 结构的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286901/

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