1

我有一个标题,testcase.h来源如下:

/*
    API
*/
void TestCaseFail(const char* message, const TC_LINE_INFO line);
void TestCaseSkip(const char* message, const TC_LINE_INFO line);


/*
    asserts
*/
#define ASSERT(condition, line, message)                { if (condition) {/* passed */} else { TestCaseFail((message), (TC_LINE_INFO)(line)); } }

代码 ,testcase.c包含实现:

#include "testcase.h"

void TestCaseFail(const char* message, const TC_LINE_INFO line) {
    OUTPUT_MSG("result[fail]: [line: %d] %s", line, message);
}

我打电话的main.c方式如下:

#include "testcase.h"

void TestAssertDefines() {
    printf("-- TestAssertDefines -------------------------------------------------\n");

    ASSERT(TRUE, 0, "");
    ASSERT(FALSE, 0, "1 != 2");

    printf("----------------------------------------------------------------------\n");
}

第二个ASSERT失败,因为它调用else了 assert 宏的子句。

编译器抱怨TestCaseFail未引用。好吧,显然我错过了一些东西,因为我看到参考很好。

我正在使用代码::块。所有文件都包含在项目中。

4

0 回答 0