【发布时间】:2012-11-21 17:24:50
【问题描述】:
我正在尝试创建一些可用于创建自己的单元测试库的宏。我的头文件如下所示:
#ifndef _TEST_H_
#define _TEST_H_
#include <stdio.h>
#include "hehe_stack.h"
static hehe_stack* tests;
typedef int (*testfunc)();
#define test_init() tests = hehe_stack_init();
#define test_register(test) hehe_stack_push(tests, test);
#define test_info() fprintf(stdout, "running %s :: %s \n", __FILE__, __func__);
#define test_run() testfunc = (int (*)()) hehe_stack_pop(tests); testfunc(); return 0;
#endif
在每个测试 .c 文件中,我想将一些函数指针推入测试堆栈,然后将每个函数指针从堆栈中弹出并调用它。我的堆栈弹出方法返回一个 void 指针,而我推入它的函数指针返回一个 int 并且不带参数。我的语法不正确吗?我觉得我应该能够做到这一点。
【问题讨论】:
-
我无法想象像这样的宏在任何情况下都有意义。
-
@Lundin 在 .c 文件中实现它们会更好吗?
-
当然。这是不可读的,会导致各种错误和麻烦。当(不是如果)出现错误时,您将很难调试它们,因为在类似函数的宏中进行调试很困难。
标签: c