前几天为新员工写一个简单的测试框架,可让他们方便的写测试用例并且执行。期间遇到一个问题就是如何让他们增加测试用例而用不影响测试框架的代码?c++的单件模式可以解决这个问题,但是其中一个难点是要在main之前注册单件。c++可以通过构造函数来实现注册,c如何注册? 最后查了下资料,原来可以定义在main之前调用的函数!有了这个特性可以改善c的模块化设计。 特性介绍: 如果想定义在main函数之前调用的函数,可以在函数的声明之后加上一句“__attribute__((constructor))”,如下: int before()__attribute__((constructor)); 如果想定义在main函数之后调用的函数,可以在函数的声明之后加上一句“__attribute__((destructor))”,如下: int after()__attribute__((destructor)); 可以看得出来,应该类似于c++中的构造和析构。