我有一个标题,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
未引用。好吧,显然我错过了一些东西,因为我看到参考很好。
我正在使用代码::块。所有文件都包含在项目中。