It's funny (or sad) that C has compound types since C99 and that they are good.Your foo(|a,b,|c1,c2,3||,|e|,|f,g,c|) writes as foo((T1){a,b,{c1,c2,c3}}, (T2){e}, (T3){f,g,c});of course, the lack of object orientation and other things makes it easier in C.
It's struct literals, a gcc extension, not in language.