0

C 标准库包含一个方法 strerror_r ( https://linux.die.net/man/3/strerror_r )。

根据编译时定义的“功能测试宏”,以及编译与 GNU 标准头文件,包含两个定义之一:

int strerror_r(int errnum, char buf, size_t buflen); / XSI 兼容 */

char *strerror_r(int errnum, char buf, size_t buflen); / GNU 特定 */

如果满足以下条件,则提供符合 XSI 的 strerror_r() 版本: (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE 否则,提供特定于 GNU 的版本。

假设我正在动态链接我的应用程序与标准库,链接器如何正确链接与函数的正确定义?

4

1 回答 1

2

其中一个实际上被调用__xpg_strerror_r并被重定向以根据strerror_r需要使用,请参阅: https ://code.woboq.org/userspace/glibc/string/string.h.html#409

于 2021-04-06T18:06:02.393 回答