在g ++中进行构建时将自定义标志传递给预处理器

时间:2019-06-16 10:00:35

标签: c++ g++

有时候,当我使用g ++在GNU / Linux中用C ++开发时,我想进行更多的“详细”印刷。

例如,让我们在文件dummy.cpp中有一段简单的代码:

#include<iostream>
#include<cstdlib>
#include<ctime>

int main(){

    srand(time(NULL));

    std::cout << "Enter a number:" << std::endl;
    int num;
    std::cin >> num;

    int random = rand() % 10 + 1;

    std::cout << "Debug: " << random << std::endl;

    std::cout << "Result: " << num+random << std::endl; 

    return 0;
}

上面的代码可通过以下命令轻松构建:

$ g++ dummy.cpp

但是有时候我想在生产就绪版本中使用调试输出来“禁用”构建。因此,我虽然要使用预处理器ifdef命令:

#include<iostream>
#include<cstdlib>
#include<ctime>

int main(){

    srand(time(NULL));

    std::cout << "Enter a number:" << std::endl;
    int num;
    std::cin >> num;

    int random = rand() % 10 + 1;

    #ifdef DEBUG
        std::cout << "Debug: " << random << std::endl;
    #endif

    std::cout << "Result: " << num+random << std::endl; 

    return 0;
}

但是在构建期间是否可以通过终端将所需的DEBUG标志/参数/所有内容通过终端传递到g++中,以便将调试与生产构建分开?

0 个答案:

没有答案