代码拉取完成,页面将自动刷新
#!/bin/sh
PROGNAME="$0"
usage() {
cat <<EOF
NAME
`basename $PROGNAME` - CPP replacement
SYNOPSIS
`basename $PROGNAME` [options] file
DESCRIPTION
CPP replacement.
Handles:
#include "file"
#ifdef symbol
#ifndef symbol
#endif
OPTIONS
-v DEFn=symbol Symbol is defined, n = 1, ... 9.
i.e. -v DEF1=groff is equivalent to:
#define groff 1
-D lvl Debug level
EOF
exit 1
}
#
# Report an error and exit
#
error() {
echo "`basename $PROGNAME`: $1" >&2
exit 1
}
debug() {
if [ $DEBUG -ge $1 ]; then
echo "`basename $PROGNAME`: $2" >&2
fi
}
#
# Process the options
#
DEBUG=0
VARS=""
while getopts "v:D:h?" opt
do
case $opt in
v) VARS="$VARS -v $OPTARG";;
D) DEBUG="$OPTARG";;
h|\?) usage;;
esac
done
shift `expr $OPTIND - 1`
#
# Main Program
#
if [ -x /opt/sfw/bin/gawk ]; then
AWK=/opt/sfw/bin/gawk
else
AWK=awk
fi
$AWK $VARS '
function do1(file, i) {
if (nfiles++ == 0)
{
print comment " t"
print comment
print comment " DO NOT EDIT! This file is generated from " file
print comment
}
while ((getline < file) > 0)
{
split($0, a)
if (a[1] == "#include")
{
gsub(/"/, "", a[2])
print comment
do1(a[2])
}
else if (a[1] == "#define")
{
def[a[2]] = 1
print comment
}
else if (a[1] == "#ifdef")
{
if (!def[a[2]])
skip = 1
print comment
}
else if (a[1] == "#ifndef")
{
if (def[a[2]])
skip = 1
print comment
}
else if (a[1] == "#endif")
{
skip = 0
print comment
}
else if (skip)
print comment
else
print $0
}
}
BEGIN {
comment = "'"'"'\\\""
if (DEF1) def[DEF1] = 1;
if (DEF2) def[DEF2] = 1;
if (DEF3) def[DEF3] = 1;
if (DEF4) def[DEF4] = 1;
if (DEF5) def[DEF5] = 1;
if (DEF6) def[DEF6] = 1;
if (DEF7) def[DEF7] = 1;
if (DEF8) def[DEF8] = 1;
if (DEF9) def[DEF9] = 1;
#for (i in def)
#print i, def[i]
do1(ARGV[1])
exit
}' $*
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。