是否有任何标准的强制名称修饰?
据我所知(所有?)一致性实现将下划线前缀添加到每个导出符号的名称。这是由C、POSIX或其他标准保证的吗?
发布于 2017-11-02 17:22:44
我不确定是否有“标准”,但加下划线似乎是20世纪70年代的一种非常常见的惯例。来自What is the reason function names are prefixed with an underscore by the compiler?
大约在1974年用C语言重写UNIX时,它的作者已经有了大量的成员语言库,而且修改新的C和C兼容代码的名称比回去修复所有现有代码更容易。
如果你想在Windows上与微软编译器进行互操作,这是C语言所必需的(仅限于win32;win64不使用修饰,因为它只有一个标准的调用约定)。
https://docs.microsoft.com/en-us/cpp/build/reference/decorated-names
另请参阅:Why do C compilers prepend underscores to external names?
https://stackoverflow.com/questions/37970360
复制相似问题