一尘不染

开头双下划线的含义

linux

在标准库(glibc的)我看到与领先的双下划线,如定义的函数__mmapsys/mman.h。目的是什么?以及我们如何仍可以调用一个mmap似乎未在任何地方声明的函数。我的意思是我们sys/mman.h为此包括在内,但未sys/mman.h声明mmap,仅声明__mmap


阅读 489

收藏
2020-06-03

共1个答案

一尘不染

从GNU手册:

除了本手册中记录的名称外,保留名称还包括以下划线(’_’)开头的所有外部标识符(全局函数和变量)以及所有以两个下划线或下划线开头且后跟一个下划线的所有标识符(无论使用何种形式)大写字母为保留名称。这样,库和头文件就可以为内部目的定义函数,变量和宏,而不会与用户程序中的名称发生冲突。

这是C和C ++供应商也使用的约定。

2020-06-03