It's been news recently that C is more widely used than Java again, and that seems to have caused folks to think more about C then usual. Over, at One Div Zero, James wrote a nice post about some of the ugly details of C related to portability. He pointed out that some patterns commonly used in "portable" C code would not be portable to certain implementations of the language, but those implementations are not in wide use.
Having had experience with C on one of these rare architectures (PDP10) which makes portability much harder than others, I left my 2 cents on the topic.
My perspective has become that it may be that those architectures became less desirable to use because of the fact that porting code (including all that sweet open source goodness) to them was more difficult than other architectures, adding delays to projects which were simply not there on architectures for which C programs were more portable.