我可以告诉预处理器代码是mbed库还是程序

时间:2015-05-06 13:07:32

标签: c++ mbed

mbed论坛已经破了,所以我在这里发帖寻求帮助。

mbed支持将库和程序作为单独的实体。本着模块测试的精神,我想在我的库代码中加入一个测试例程。如果将库作为程序导入并编译,则main()将构建并链接,并生成一些测试输出。如果正常使用库,则main()不会内置到代码中,从而防止链接器错误。

我是否有任何预定义的预处理程序指令可以用来做出这个决定?如果没有,是否有人建议我如何在我的图书馆中实施测试例程?

为清楚起见,这是一个简单的例子:

Here is a link to the library/program in mbed if you want to experiment/pull request suggestions

想要知道它是程序还是库的示例代码

#include "mbed.h"

class LED_TEST:public DigitalOut{
   public:
   LED_TEST(PinName pin):DigitalOut(pin) {};

   void TurnOn() {write(1);}
   void TurnOff() {write(0);}
};

#ifdef __IN_A_PROGRAM   //if I'm compiling as a program then I want to create this main for testing.
                        //if I'm compiling as a library I do not want the main to prevent linker problems
int main(void)
{
LED_TEST lt(LED1);
    while (1)
    {
        lt.TurnOn();
        wait(1);
        lt.TurnOff();
        wait(1);
    }
}
#endif

0 个答案:

没有答案