一个可以编译多个c++文件并且可以给main函数传参的shell


#!/bin/bash
path="./binary/"
if [ ! -d $path ]
then
    mkdir $path
fi
compile_args=()
main_args=()
flag=0
while [ -n "$1" ]
do
    case "$1" in
        -c)
            shift
            flag=0
            compile_args[${#compile_args[@]}]=$1;;
        -m)
            shift
            flag=1
            main_args[${#main_args[@]}]=$1;;
        *)
            if [ $flag -eq 0 ]
            then
                compile_args[${#compile_args[@]}]=$1
            else
                main_args[${#main_args[@]}]=$1
            fi;;
    esac
    shift
done
name=${compile_args[0]}
binary="${path}${name%.*}"
g++ -o ${binary} --std=c++11 ${compile_args[@]}
${binary} ${main_args[@]}

使用方法:
比如 这个shell名叫cco.sh
执行命令: . cco.sh -c 2_1.cpp -m 11 22 或者. cco.sh -m 11 22 -c 2_1.cpp
-c 后面是g++需要编译的文件名 可以多个
-m 后面是命令行中要传给c++ main函数的参数。



给c++ main函数传参

int main(int argc, char * argv[])
{
    std::cout << argc <<std::endl;
    std::cout << argv[0] <<std::endl;
    std::cout << argv[1] <<std::endl;
    std::cout << argv[2] <<std::endl;
    return 0;
}

argc就是从命令行给main函数传参的个数
argv就是所有的参数,argv[0] 是文件名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值