繁体   English   中英

如何编写一个函数来替换#ifdef和#endif对?

[英]How to write a function to replace #ifdef and #endif pair?

我在代码中#endif使用#ifdef#endif ,例如:

#include<iostream>
#define __TEST____
int main()
{
    std::cout<<"do something 1"<<std::endl;
#ifdef __TEST____

         // a 
         // lot
         // of 
         // test codes
#endif
    return 0;
}

#ifdef#endif对降低了代码的可读性。 如何编写函数来替换#ifdef#endif对? 就像这个:


#include<iostream>
#define __TEST____
#define TEST(...) { #ifdef __TEST____ {__VA_ARGS__} #endif}
int main()
{
    std::cout<<"do something 1"<<std::endl;
    TEST(
         // a 
         // lot
         // of 
         // test codes
         );
    return 0;
}

在C ++(任何版本)中,您只需更改#ifdef#define的顺序:

#ifdef __TEST__
# define TEST(...) { __VA_ARGS__ }
#else
# define TEST(...)
#endif

int main()
{
    std::cout<<"do something 1"<<std::endl;
    TEST(
         // a 
         // lot
         // of 
         // test codes
         );
    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM