Am Montag, 25. Januar 2016 schrieb KatolaZ: > On Mon, Jan 25, 2016 at 09:27:15AM +0100, Didier Kryn wrote: > > [cut] > > > > > The following works in plain old C: > > > > #include <stdio.h> > > #include <string.h> > > static void print_start(char const *name, char const *what) > > { > > unsigned name_len, what_len, total; > > > > name_len = strlen(name); > > what_len = strlen(what); > > total = name_len + what_len + 3; > > { > > char buf[total], *p=buf; > > memcpy(p, name, name_len); > > p += name_len; > > *p++ = ' '; > > memcpy(p, what, what_len); > > p += what_len; > > *p++ = ':'; > > *p = ' '; > > *buf &= ~0x20; > > > > Write(2, buf, total); > > } > > } > > > > Embedded subprograms have other use cases. In long programs, > > they allow to declare variables with a limited scope, just near > > where they are used. > > I would say that having embedded subprograms in a function is not the > best thing one can do in C, but that's maybe a matter of preference :) > > HND > > KatolaZ >
What about making the source smaller and not the executable? static void print_start(char const *name, char const *what) { if (name[0]) fprintf("%c%s",name[0]&~0x20, name+1); fprintf(stderr, " %s: ",what); } I know this is not slim, but as maintenance time rises with pow(lines-of-code,something>1.0), it pays quite soon :-) -- Please do not email me anything that you are not comfortable also sharing with the NSA. _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng