1: $cppawk ' #include BEGIN { #if defined case_temps && defined case && defined of && \ defined matching && defined cbreak && defined otherwise print 1 #endif }' : 1 -- 2: printf "%s\n" foo bar xyzzy x b | $cppawk ' #include { case ($0) { of ("foo") print "** foo case: fallthrough!" cfall; of ("bar", "xyzzy") { print "** bar/xyzzy case" cbreak; } matching (/x/) print "** /x/ case" cbreak; otherwise print "** default" cbreak; } }' : ** foo case: fallthrough! ** bar/xyzzy case ** bar/xyzzy case ** bar/xyzzy case ** /x/ case ** default -- 3: $cppawk ' #include function f(arg, case_temps) { case (arg) { of (1, 2, 3) cret(arg * 10) otherwise cret(-arg) } } BEGIN { print f(1), f(2), f(3), f(4) }' : 10 20 30 -4 -- 4: $cppawk ' #include function f(arg, case_temps, retval) { retval = 0 case (arg) { of ("alt") ++retval cfall mixed (("foo", "bar"), (/^abc/, /xyz$/)) ++retval cbreak otherwise --retval cbreak } return retval } BEGIN { print f("alt"), f("foo"), f("bar"), f("abcde"), f("wxyz"), f("1abc2") }' : 2 1 1 1 1 -1