1
Iはテスト機能を作成するため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
}
2つのマクロ間の重複を削除するにはどうすればよいですか?
は、この仕事をしていますか?私はプリプロセッサが1回のパスでマクロを展開したと考えました... –
おっと、args間違った方法ラウンド! – Skizz
@Matthew:マクロは可能な限り拡張されています(シングルパスではありません)。従属マクロのチェーンが可能で、デバッグ可能なコードをほとんど作成できません。 @Skizz:それは固定です。 @Neil Butterworth:放出されたコードについては真であり、この問題はほとんど解決できないとあなたに同意します。しかし、論理的な複製はエレガントに削除されます。 – sharptooth