Как я могу удалить дублирование между этими макросами C? - PullRequest
1 голос
/ 19 мая 2009

У меня есть следующая пара макросов препроцессора 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
}

Как убрать дублирование между двумя макросами?

Ответы [ 2 ]

6 голосов
/ 19 мая 2009
#define test(name) testInSuite( name, TestSuite::active() )

Однако это не уменьшает количество испускаемого C и машинного кода, а только удаляет логическое дублирование.

0 голосов
/ 19 мая 2009

Попробуйте:

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