1
내가 만드는 테스트 기능 C 사전 프로세서 매크로의 다음과 같은 몇 가지있다 :이러한 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
}
두 매크로 간의 중복을 제거하려면 어떻게해야합니까?
이 일을합니까? 전처리 기가 단일 패스에서 매크로를 확장한다고 생각했는데 ... –
으악, args 틀린 방법 라운드! – Skizz
@Matthew : 단일 패스가 아닌 매크로를 확장 할 수 있으므로 종속 매크로 체인이 가능하며 디버깅 할 수있는 코드를 거의 만들지 못합니다. @Skizz : 맞습니다. @Neil Butterworth : 방출 된 코드에 대해서는 사실이며이 문제를 거의 해결할 수 없다는 점에 동의합니다. 그러나 논리적 인 복제는 우아하게 제거됩니다. – sharptooth