代码之家  ›  专栏  ›  技术社区  ›  Matthew Murdoch

如何删除这些C宏之间的重复?

  •  1
  • Matthew Murdoch  · 技术社区  · 17 年前

    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 回复  |  直到 10 年前
        1
  •  6
  •   sharptooth    17 年前
    #define test(name) testInSuite( name, TestSuite::active() )
    

    然而,这并没有减少发出的C和机器代码的数量,只是删除了逻辑重复。

        2
  •  0
  •   Tim Cooper    14 年前

    尝试:

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