【问题标题】:Compiling Only one part of if-else只编译 if-else 的一部分
【发布时间】:2013-04-07 06:16:44
【问题描述】:

请看下面的代码

#include <iostream>
using namespace std;

    int main (){
        #if true
            int fd = 0;

        #else
            int dd =0;
        #endif
        cout<<fd;
        //cout<<dd;

        system("pause");
        return 0;
    }

在这里,我试图只编译一个块。如果 'if' 编译,那么 'else' 不应该,同样明智。但这不起作用。请帮忙。

【问题讨论】:

  • 怎么不工作了? LWS 测试运行良好。
  • 在我的机器上工作(g++ 来自 gcc 版本 4.2.1(基于 Apple Inc. build 5658)(LLVM build 2336.11.00))。你用的是什么编译器?
  • 究竟是什么不工作以及如何工作?请描述您的预期和实际结果。

标签: c++ if-statement preprocessor-directive


【解决方案1】:

对于条件编译,代码必须如下所示:

#include <iostream>
using namespace std;

int main (){
    #ifdef Somedef
        int fd = 0;
        cout<<fd;
    #else
        int dd =0;
        cout<<dd;
    #endif
    system("pause");
    return 0;
}

然后在编译代码时为定义提供命令行参数,例如:gcc -DSomedef test.c -o test 以包含代码并删除用于删除代码的命令行定义

注意:您已经为条件编译检查了“#if true”,该语句将始终为真,因此将在编译时包含该部分代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2013-09-10
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多