1

我有以下几个用于创建测试函数的C预处理器宏:

// Defines a test function in the active suite
#define test(name)\
    void test_##name();\
    SuiteAppender test_##name##_appender(TestSuite::active(), test_##name);\
    void test_##name()

像这样使用:

test(TestName) {
    // Test code here
}

// Defines a test function in the specified suite
#define testInSuite(name, suite)\
    void test_##name();\
    SuiteAppender test_##name##_appender(suite, test_##name);\
    void test_##name()

像这样使用:

test(TestName, TestSuiteName) {
    // Test code here
}

如何删除两个宏之间的重复?

4

2 回答 2

6
#define test(name) testInSuite( name, TestSuite::active() )

但是,这不会减少发出的 C 和机器代码的数量,只会删除逻辑重复。

于 2009-05-19T09:42:55.080 回答
0

尝试:

#define test(name) testInSuite (name, TestSuite::active())
于 2009-05-19T09:44:44.093 回答