如何编写替换#ifdef和#endif对的函数?

时间:2019-01-17 10:05:31

标签: c++ c c++11

例如,我在代码中经常使用#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;
}

1 个答案:

答案 0 :(得分:3)

在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;
}