Most
executables are not performance-critical enough for
dynamic-linker overhead to matter. (For the few that are, or for
the few cases where lots are, yes, static linking can help.)
I keep telling myself
that whenever I launch Firefox after a reboot
...
Do you have reason to think dynamic-linker overhead is a perceptible
fraction of that delay?
[file formats
and protocols]
First off, the C standard mandates that the order of fields in a
struct cannot be reordered,
Yes. (I think this is a Bad Thing, but I can see why they did it.)
so that just leaves padding and byte order to deal
with.
And data type size. (To pick a simple example, if your bytes are
nonets, you will have an interesting time generating an octet stream by
overlaying a struct onto a buffer.)
And alignment. Not all protocols and file formats place every datatype
at naturally-aligned boundaries in the octet stream.
Now, it may sound cavalier of me, but of the three
compilers I use at
work (gcc, clang, Solaris Sun Works thingy) I know how to get them to
layout the structs exactly as I need them
Great. ...for code that doesn't mind writing off portability to other,
including future, hardware and compilers.
I still don't see why you're citing "it works for my work environment"
as justification for "the C standard should write off anything else".
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B