我想在main
功能之前做一些事情。我有多个源文件。在每个文件中,都有一些工作需要在main
. 这在 C++ 中没有问题,但在 C 中存在问题。
在 C++ 中,这可以通过两种方式完成:
- 利用全局类/结构的构造函数。
- 调用全局变量的函数
例如,static const int __register_dummy_ = __AddRegisterMetaInfo(...);
但是,在 C 中,任何一种方式都是不可能的。显然,没有构造函数。所以,第一种选择本质上是不可能的。
我认为第二个选项是可能的,但不是用 C 编译的(我只用 Visual C++ 进行了测试。它给出了C2099。)。C 只允许将常量转换为非自动变量。
有什么方法可以在main之前调用一些函数吗?
编辑:似乎很多人误解了我真正想做的事情。很抱歉以简化的方式写下这个问题。
我需要做的是实现一种 C++ 运行时类信息功能,就像MFC 的方法一样。在这种方法中,我需要从所有源代码中获取一些信息。例如,假设每个源文件都有一个类的定义,我想查看所有信息(例如,类名和父类)。最简单的方法是在每个文件中放置一个静态构造函数,每个构造函数访问一个全局数据结构并注册其信息。但是,我也想找到一种方法在 C 中实现类似的东西。所以,简单地调用 a pre_main_job
inmain
不能成为我的答案。
请注意,这种对静态构造函数的滥用也可以在 LLVM 编译器套件中找到。每个优化/分析功能都被实现为一次通过。所有这些通行证都是通过静态构造函数注册的。