【发布时间】:2019-08-30 20:58:12
【问题描述】:
我最近从this answer by @zwol看到了这段话:
read上的__libc_前缀是因为在 C 库中read实际上有三个不同的名称:read、__read和__libc_read。这是实现“命名空间清洁”的一种技巧,如果您打算实现一个成熟且完全符合标准的 C 库,您只需要担心这一点。简短的版本是C库中有很多函数需要调用read,但是其中一些不能使用nameread来调用它,因为C程序在技术上是允许的自己定义一个名为read的函数。
你们中的一些人可能知道,我是setting out to implement my own full-fledged and fully standards-compliant C library,所以我想了解更多详情。
什么是“命名空间清洁度”,glibc 是如何实现的?
【问题讨论】:
-
我想为这个问题写一个答案,但是现在是星期五下午 5 点,我不知道我是否有时间给予它应有的关注,嗯,几个星期。现在,我将向您指出section 7.1.3 of C2011,并建议您特别考虑“没有保留其他标识符(用于实现)”的含义。
标签: c posix language-lawyer libc