如何在C中模拟构造函数或静态块

时间:2011-06-08 09:28:26

标签: c linux unix static constructor

我正在增强一个工具。 请注意,此工具将链接到测试程序,该程序将具有main( )功能,因此我的工具无法使用main。该工具具有许多测试程序将使用的功能。

另外,我想为这个工具添加一个计时器。这个想法是:当测试程序链接到这个工具并启动时,计时器应该自动启动。

如果这是C ++,我会创建一个带有构造函数的类,这样无论何时加载类,都会先调用构造函数,然后我可以在构造函数中初始化我的计时器。

如果这是Java,我会简单地创建一个全局静态块,并将定时器代码放在静态块中。

但我的工具纯粹是在Linux中使用C语言,那么我该如何实现这一目标呢?

请帮帮我。

2 个答案:

答案 0 :(得分:4)

这看起来也像你的情况:

How do I get the GCC __attribute__ ((constructor)) to work under OSX?

来自GCC docs:

  

构造
  析构函数
  构造函数(优先级)
  析构函数(优先级)

     

构造函数属性导致   要自动调用的函数   在执行之前进入main()。   同样,析构函数属性   导致调用该函数   在main()之后自动执行   已完成或退出()已被调用。   具有这些属性的函数是   用于初始化将要的数据   在...期间隐式使用   执行该计划。

答案 1 :(得分:2)

为调用crt*.o的{​​{1}}目标文件编写您自己的替代品,并在构建时链接到该文件。