请注意C++03!任何C++11的解决方案对我都不好,但请仅供了解而发布。
我知道预处理器可以完成以下操作:
我不明白为什么所有必需的信息在预处理器时间不可用。
所以,请告诉我如何实现这种行为。
编辑1: 普通的if条件在我的情况下行不通,因为我还会做像这样的事情:
我知道预处理器可以完成以下操作:
#define FOO 4
#if FOO == 4
cout<<"hi"<<endl;
#endif
我需要的是:
#define BAR(X)\
#if X == 4\
cout<<"hi"<<endl;\
#endif
main.cpp
BAR(4)
我不明白为什么所有必需的信息在预处理器时间不可用。
所以,请告诉我如何实现这种行为。
编辑1: 普通的if条件在我的情况下行不通,因为我还会做像这样的事情:
#define BAR(X)\
#if X == 4\
int poop;
#elif
double poop;
#endif
template<int> struct BAR { typedef double T; }; template<> struct BAR<4> { typedef int T; }; BAR<4>::T intPoop; BAR<1>::T doublePoop;
- Christian KiewietBAR(i)
和BAR(4)
是完全不同的用例。 - Lightness Races in Orbit