用环境变量控制c/c++的条件编译

用环境变量控制c/c++的条件编译
author:hjjdebug
date: 2012-09-06
--------------------------------------------------------------------------------
环境变量能影响什么?
甲. 环境变量不能直接影响c/c++ 代码中的条件编译
看下面例子:
a. 书写代码
gitserver@gitserver-desktop:~/share/hjj/ctest$ cat hello.cpp

    #include <stdio.h>
    int main(int argc, char *argv[])
    {
    #ifdef _TESTMACRO
        printf("_TESTMACRO has defined\n");
    #else
        printf("_TESTMACRO not defined\n");
    #endif
        return 0;
    }

 代码中的宏定义, 要用#define 或 gcc 传入-D参数定义, 环境变量影响不了.


b. 测试环境变量_TESTMACRO 未定义时
    gitserver@gitserver-desktop:~/share/hjj/ctest$ echo $_TESTMACRO
    gitserver@gitserver-desktop:~/share/hjj/ctest$ gcc hello.cpp -o hello
    gitserver@gitserver-desktop:~/share/hjj/ctest$ ./hello
    _TESTMACRO not defined

c. 测试环境变量_TESTMACRO 定义时
    gitserver@gitserver-desktop:~/share/hjj/ctest$ export _TESTMACRO=1
    gitserver@gitserver-desktop:~/share/hjj/ctest$ echo $_TESTMACRO      
    1
    gitserver@gitserver-desktop:~/share/hjj/ctest$ gcc hello.cpp -o hello
    gitserver@gitserver-desktop:~/share/hjj/ctest$ ./hello
    _TESTMACRO not defined

d. 要想影响条件编译,需要在编译选项中定义宏。如下演示。
    gitserver@gitserver-desktop:~/share/hjj/ctest$ gcc hello.cpp -o hello -D_TESTMACRO
    gitserver@gitserver-desktop:~/share/hjj/ctest$ ./hello
    _TESTMACRO has defined



乙. 环境变量能影响Makefile 中的条件执行
演示如下:
a. 书写测试Makefile 代码
    gitserver@gitserver-desktop:~/share/hjj/ctest$ cat Makefile
    SRC=hello.cpp
    COMPILE=gcc
    OUT=hello
    ifdef _TESTMACRO

    $(warning "_TESTMACRO defined")

     CFLAG += /D _TESTMACRO

    else

    $(warning "_TESTMACRO not defined")

     endif

    all:
        $(COMPILE)  $(CFLAG) $(SRC) -o $(OUT)

b. 演示测试。
    gitserver@gitserver-desktop:~/share/hjj/ctest$ echo $_TESTMACRO
    1
    gitserver@gitserver-desktop:~/share/hjj/ctest$ make
    Makefile:5: "_TESTMACRO defined"
    gcc /D_TESTMACRO hello.cpp -o hello
    gitserver@gitserver-desktop:~/share/hjj/ctest$ unset _TESTMACRO
    gitserver@gitserver-desktop:~/share/hjj/ctest$ echo $_TESTMACRO

    gitserver@gitserver-desktop:~/share/hjj/ctest$ make
    Makefile:7: "_TESTMACRO not defined"
    gcc hello.cpp -o hello

小结: 有时候,需要编写条件编译代码,例如用来适配,或控制不同区域的代码。
    当想用环境变量控制c/c++ 的条件编译时, 可以用环境变量控制makefile 的条件语句,使之定义不同的编译选项。
    达到控制c/c++ 条件编译的目的


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在Windows操作系统上配置C/C++编译环境的步骤: 1. 下载MinGW-w64安装包,官网链接:http://mingw-w64.org/doku.php/download 2. 运行安装包,选择“Architecture”为“x86_64”,“Threads”为“posix”,“Exception”为“seh”,“Build revision”为最新版本,点击“Next”。 3. 选择安装路径,点击“Next”。 4. 选择需要安装的组件,至少需要选择“mingw64-gcc-g++”,点击“Next”。 5. 点击“Install”开始安装。 6. 安装完成后,将MinGW-w64的bin目录添加到系统环境变量中。例如,如果MinGW-w64安装在C盘根目录下的mingw-w64-x86_64文件夹中,则需要将C:\mingw-w64-x86_64\mingw64\bin添加到系统环境变量中。 7. 在命令行中输入“g++ -v”命令,如果输出了g++的版本信息,则说明安装成功。 以下是在Linux操作系统上配置C/C++编译环境的步骤: 1. 打开终端,输入以下命令安装gcc和g++编译器: ``` sudo apt-get update sudo apt-get install build-essential ``` 2. 输入以下命令安装CMake: ``` sudo apt-get install cmake ``` 3. 输入以下命令安装调试工具: ``` sudo apt-get install gdb ``` 4. 输入以下命令安装代码编辑器: ``` sudo apt-get install code ``` 5. 在代码编辑器中编写C/C++代码,并保存为.cpp文件。 6. 在终端中进入.cpp文件所在的目录,输入以下命令编译代码: ``` g++ -o output_file input_file.cpp ``` 其中,output_file为输出文件名,input_file.cpp为输入文件名。 7. 输入以下命令运行程序: ``` ./output_file ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值