C++ C++;常量数组附加

C++ C++;常量数组附加,c++,arrays,constants,compile-time,C++,Arrays,Constants,Compile Time,我有这个程序,它由一个加载器和不同的静态链接模块组成。程序的入口点进入一个循环,该循环执行所有模块初始化例程。指向这些例程的函数指针存储在main.cpp文件的常量数组中 我的问题是,每次我想添加或删除其中一个模块时,我都必须修改阵列。 我觉得应该有一种自动化这个过程的方法。有没有办法让预处理器加载和解析包含函数名的文本文件?或者我可以从另一个.cpp文件向常量数组追加新条目吗?如何在编译时生成此数组 提前谢谢 如果模块列表在编译时已知,而不在makefile中简单列出它们 给任何关心的人。我实

我有这个程序,它由一个加载器和不同的静态链接模块组成。程序的入口点进入一个循环,该循环执行所有模块初始化例程。指向这些例程的函数指针存储在main.cpp文件的常量数组中

我的问题是,每次我想添加或删除其中一个模块时,我都必须修改阵列。 我觉得应该有一种自动化这个过程的方法。有没有办法让预处理器加载和解析包含函数名的文本文件?或者我可以从另一个.cpp文件向常量数组追加新条目吗?如何在编译时生成此数组


提前谢谢

如果模块列表在编译时已知,而不在makefile中简单列出它们

给任何关心的人。我实际上已经解决了我的问题。原来gcc有一个特性 称为“节”,它允许您创建可以多次扩展的静态内存区域 在编译时,只需指定具有此属性的声明。这将创建一个内存区域
将插入的元素并排打包,这使其具有数组排序的特征。可以通过定义名为_start_name和_end_name的extern const char指针来访问内存位置,让我们调用节“name”。谢谢。:-)

最简单的方法是将该数组移动到一个单独的文件
cpp
,是的,在编译之前生成它
Makefile
s或类似的majyyks就可以了。如何从Makefile中的列表生成数组?使用您选择的脚本语言将很容易。也就是说,选中make_all_modules:*u modules.cpp对不起,我不清楚。我的意思是,模块列表可以以其他形式显示,数组不是单一选项。可以使用某种形式的静态对象初始值设定项。所以,您使用特定模块代表对象的静态数组和方法put(representative*)创建一些模块类ListOfModules。然后,一些模块创建静态帮助对象,该对象在自己的构造函数中调用ListOfModules::put(this)。仅此而已。@SergeyProkhorov因为动态初始化不能保证是单线程的,所以在
模块列表
中需要一个互斥体。