gpt4 book ai didi

c++ - 模仿C中静态对象的构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:36 24 4
gpt4 key购买 nike

我想要一个全局的 names 变量,看起来像这样

char* names[NAMES_CAP];
int names_len = 0;

而且我希望链接到该库的每个人都能够向该列表添加一个项目。

main 很容易做到这一点。

int main(int argc,char**argv) {
names[names_len++] = "new name";
names[names_len++] = "new name 2";
}

但是如果我想叠加两个库怎么办? (即,我的库 libnames 保存全局变量。如果有人链接到使用 libnameslibnameuser,它将自动添加所有定义的名称在 libnameuserlibnames 中的 names 数组。

有什么办法吗?

在 C++ 中,我可以将 names[names_len++] = "..." 插入到全局对象的构造函数中,并且必须调用它。但是我可以用纯 C 来实现吗?

最佳答案

如果您使用的是 gcc,则可以使用构造函数属性 __attribute__((constructor))得到同样的效果。然而,这是非标准的 C。

但是我不建议使用这种模式,因为无法控制在 main 之前运行的任何函数的顺序。我宁愿找到一种在 main 开始运行后 Hook 所有“构造函数”函数的好方法。

关于c++ - 模仿C中静态对象的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848790/

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