背景
POSIX 标准为C 语言添加了很多库函数和其他标识符。在dlsym()
函数的描述中,它说(我强调):
概要
#include <dlfcn.h> void *dlsym(void *restrict handle, const char *restrict name);
描述
dlsym () 函数应获取符号的地址(函数标识符或数据对象标识符)...
C 标准不保证函数指针可以转换为 a void *
,甚至不保证指针的大小相同。这有效地增加了对 C 类型系统的额外限制。
问题
我的问题是这样的:
- 对于 C 类型系统的这种限制是否有规范性参考,还是只能从某些库函数的描述中推导出来?
- POSIX 甚至可以在一个系统上实现吗?
sizeof (function pointer) > sizeof (void *)
参考
- C11 标准(最终公开草案):n1570
- The Open Group的 POSIX 标准:POSIX.1-2008
- POSIX
dlsym()
函数