C compilers *did* have some type checking in the early 80s, and most
programmers used lint to check function types across files.
"some". For practical purposes it could be ignored (one could go on at
length) - which leads us to lint.
I use/used lint, but that practice was very rare - I don't recall
working on _any_ program where a previous developer had used lint.
On the other hand, I did work with developers who actively worked
to make using lint harder (by removing lint-rules from makefiles,
removing the ARGSUSED comments and #ifdef lint artifacts).
Even for more of those who claimed to run lint,
this was an occasional activity,
rather than a regular part of the process.
A more accurate statement - and one that is still true - is that C can
be used as a portable assembler.
sure - I haven't used assembler much since starting to work with C.
However, the type of assembler code that I was working with then -
that would require system-dependent extensions which lie outside the scope
of this group...