我怎样才能改变#define

时间:2014-07-16 22:56:40

标签: c++ conditional c-preprocessor

当用户输入一些注册码时,如何将#define TRIAL更改为#define PREMIUM。

感谢。

//#define TRIAL
#define PREMIUM

using System;
using System.Diagnostics;
using System.Reflection;

namespace Attributes
{
    [Obsolete("This is an old class. Use new class instead!")] 
    class Test
    {
        [Conditional("TRIAL")]
        void Trial()
        {
            Console.WriteLine("Trial");
        }

        [Conditional("PREMIUM")]
        void Release()
        {
            Console.WriteLine("PREMIUM");
        }
......................................

2 个答案:

答案 0 :(得分:2)

听起来你可能误解了预处理器指令。您应该以某种方式将这种信息存储在用户的计算机上并将其加载到变量中,或者更好的是,发布两个版本并提供升级选项。这将更加稳定和安全。

如果您选择采用这种方法,那么您可以使用预处理程序指令为程序的每个版本编译不同版本的库和代码。

答案 1 :(得分:1)

#define是编译时指令,所以你不能使用它......相反,你应该使用旧的if:

class Test
{
    void DoAction() {
      if(trial) { Console.WriteLine("Trial"); }
      else { Console.WriteLine("PREMIUM");
    }
}