【问题标题】:What are the conventions for __func functions?__func 函数的约定是什么?
【发布时间】:2012-05-07 14:37:16
【问题描述】:

我在名为 __foo 的 Linux 代码中看到了一堆函数。双下划线代表什么,什么时候用?

【问题讨论】:

    标签: c linux coding-style


    【解决方案1】:

    这意味着它是一个保留的标识符。 C++ 03 和 C99 标准都提到了这一点。

    C99:

    7.1.3 保留标识符

    • 以下划线和大写字母或另一个下划线开头的所有标识符始终保留用于任何用途。
    • 以下划线开头的所有标识符始终保留用作普通和标记名称空间中具有文件范围的标识符。

    C++ 03:

    每个包含双下划线 (__) 或以下划线后跟大写字母 (2.11) 的名称都保留给实现以供任何使用。

    也可以参考:

    【讨论】:

    • 保留执行什么?像私人功能?为什么不使用 private/not-exported-in-header 函数?
    • 编译器和编译器的库实现。
    • imo 这是为了避免标识符冲突。
    • @EpsilonVector,C 没有私有函数,有时它们需要在标题中。例如,它们可能是用于实现可变参数宏的变量或函数,或者是内部 C++ 异常处理系统使用的符号名称。
    • 请注意,Linux 内核有时也会使用 C 标准可能为“实现”保留的名称。因此,您可能也希望将 Linux 内核视为实现的一部分。由于内核开发人员只关心 GCC 编译器,因此他们可以合理地确定他们正在避免与编译器发生名称冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多