2013-10-25 59 views
6

我正在使用C++代码在Visual Studio 2010中工作。我想要做的是改变在运行时的预处理器指令的值,如果不知道这是可能的,但我已经试过这个..在运行时更改宏的值

somefile.h

static int mValue = 0; 
#define POO = mValue; 
... 

#if POO 0 
//define class methods 
#else 
//define class methods differently 
} 

的main.cpp

main() 
{ 

//Code calls constructor and methods allowed when POO is 0 

//Code increments mValue 

//Code calls constructor and methods allowed when POO is 1 


} 

POO如何更改以便类对象使用其他方法的不同实现?或者如果这是不可能的,另一种方法是什么?

+5

您不能在运行时更改预处理器指令。使用具有不同派生类的基类可能会有效,这取决于您的问题(根据您向我们展示的内容很难分辨)。 – Yuushi

回答

8

您似乎对“预处理器”指令的性质感到困惑。这些只在编译器处理之前存在。编译器在编译步骤中消除(替换/处理)宏定义。它们在运行时不存在以改变。它本身就是一种迷你语言,只能编译为c/C++代码,然后由编译器处理。

这听起来像你希望你的类是基于某种运行时输入的两种不同的东西。这可能表明设计问题。你可能会考虑定义两个不同的类(可能有一个普通的基类)。