是否有任何标准命令装饰?
据我所知,大多数(全部?)符合要求的实现在每个导出符号的名称中添加下划线前缀。这是由C,POSIX还是其他标准保证的?
答案 0 :(得分:0)
我不确定"标准"但是前面的下划线似乎是一个可以追溯到20世纪70年代的常见惯例。来自What is the reason function names are prefixed with an underscore by the compiler?:
当大约1974年在C中重写UNIX时,它的作者 已经拥有广泛的assember语言库,而且更容易 破坏新的C和C兼容代码的名称,而不是返回和 修复所有现有代码。
如果要与Windows上的Microsoft编译器进行互操作,则需要C名称(仅限win32; win64不使用装饰,因为它只有一个标准调用约定)。
https://docs.microsoft.com/en-us/cpp/build/reference/decorated-names
另请参阅:Why do C compilers prepend underscores to external names?