在运行时使用标志变量的宏扩展

时间:2015-02-06 16:47:31

标签: c

    if (a==5)
    {
    #define FLAG 1
    }

    #ifdef FLAG
    {
    // Execute this portion else not
    }
    #endif

我想将它用作标志变量,如果定义了变量(在运行时取决于条件),那么#ifdef中的代码将被执行,否则不会执行。

如果在c编程中这是不可能的,请建议我实现相同的最佳方法。 这可以帮助更快地执行代码。还减少了编译时间

2 个答案:

答案 0 :(得分:1)

bool flag = false;

if (a == 5)
{
    flag = true;
}

if (flag)
{
    // [...]
}

答案 1 :(得分:1)

1)FLAG不是变量,它是预处理器符号 2)预处理器从上到下运行,定义符号(或取消定义它们),无论你的可编译的代码逻辑(当然它不依赖于它),在它是偶数之前编译。因此,在您的示例中,#ifdef将始终有效。
3)要实现您想要的功能,只需使用常规的if / else语句。