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

发布于 2024-07-20 06:15:16 字数 701 浏览 12 评论 0原文

我有以下几个用于创建测试函数的 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
}

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

I have the following couple of C pre-processor macros for creating test functions:

// 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()

which is used like this:

test(TestName) {
    // Test code here
}

and

// 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()

which is used like this:

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

How can I remove the duplication between the two macros?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空‖城人不在 2024-07-27 06:15:16
#define test(name) testInSuite( name, TestSuite::active() )

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

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

However this doesn't reduce the amount of emitted C and machine code, only removes logical duplication.

青朷 2024-07-27 06:15:16

尝试:

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

Try:

#define test(name) testInSuite (name, TestSuite::active())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文