仅编译if-else的一部分

时间:2013-04-07 06:16:45

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

请查看以下代码

#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'不应该像明智的那样。但这不起作用。请帮忙。

1 个答案:

答案 0 :(得分:3)

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

#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包含代码并删除命令行define以删除代码

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