0

Does any standard mandate name decoration?

As far as I know most (all?) conforming implementations add underscore prefix to the name of each exported symbol. Is this guaranteed by a C, POSIX or some other standard?

martinkunev
  • 1,364
  • 18
  • 39

1 Answers1

0

I'm not sure about a "standard" but the prepended underscore seems to be a very common convention dating from the 1970s. From What is the reason function names are prefixed with an underscore by the compiler?:

At the time that UNIX was rewritten in C in about 1974, its authors already had extensive assember language libraries, and it was easier to mangle the names of new C and C-compatible code than to go back and fix all the existing code.

It is required for C names if you want to interoperate with the Microsoft compilers on Windows (win32 only; win64 does not use decoration since it has only a single standard calling convention).

https://learn.microsoft.com/en-us/cpp/build/reference/decorated-names

See also: Why do C compilers prepend underscores to external names?

Igor Skochinsky
  • 24,629
  • 2
  • 72
  • 109