Why C variable argument functions are an abomination (and what to do about it)

As a language, C has managed to do a remarkable job providing an incredibly useful middle ground between assembly languages and other systems languages⦠for about 60 years.
At its heart is a simple imperative language with accessible enough syntax. And while concepts like pointers are often a challenge for people coming into the language, if you are doing systems programming, you should have to understand them. Not to mention, C is a massive upgrade over dealing with the problem in assembly.