初始化C++类变量的简单脚本

程序员是很懒的。我们都知道,成员变量要初始化,要不就会出现很蛋疼的问题。但是一个有50个变量的类,去一个个写初始化式很傻,又不能跟c一样直接memset(POD可以)。

想把初始化这部分自动化,在网上找半天找不到相应的脚本(如果谁有希望能告诉我没,谢谢:)),于是只好自己写了个简单的,顺便分享下:


#!/bin/sh
#useage
#./variables_initializate.sh path_to_your_header_file [op]
#op 1,init the variables in the class initialization function.
#otherwise,treat as the default mode

type="bool|int|long|float|double|char|[[:alnum:]]+\*"

# $2 is empty or not equal 1
if [[ -z $2 ]] || [ $2 -ne 1 ]; then

cat $1 \
| grep -E "^[[:space:]]*($type)[[:space:]]*[a-zA-Z0-9]+;" \
| sed "s/^[[:space:]]*bool[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = false;/" \
| sed "s/^[[:space:]]*int[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = 0;/" \
| sed "s/^[[:space:]]*long[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = 0;/" \
| sed "s/^[[:space:]]*float[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = 0.0f;/" \
| sed "s/^[[:space:]]*double[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = 0.0f;/" \
| sed "s/^[[:space:]]*char[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1 = 0;/" \
| sed "s/^[[:space:]]*[[:alnum:]]\{1,\}[[:space:]]\{0,\}\*[[:space:]]\{0,\}\([[:alnum:]]\{1,\}\);/\1 = NULL;/"

else

cat $1 \
| grep -E "^[[:space:]]*($type)[[:space:]]*[a-zA-Z0-9]+;" \
| sed "s/^[[:space:]]*bool[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(false),/" \
| sed "s/^[[:space:]]*int[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(0),/" \
| sed "s/^[[:space:]]*long[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(0),/" \
| sed "s/^[[:space:]]*float[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(0.0f),/" \
| sed "s/^[[:space:]]*double[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(0.0f),/" \
| sed "s/^[[:space:]]*char[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\);/\1(0),/" \
| sed "s/^[[:space:]]*[[:alnum:]]\{1,\}[[:space:]]\{0,\}\*[[:space:]]\{0,\}\([[:alnum:]]\{1,\}\);/\1(NULL),/"

fi

用法就是 
./variables_initializate.sh 头文件路径 可选参数1

如果加了参数,那么就生成类构造函数里头初始化的形式

如果没加,那么默认就是直接初始化的方式




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值