【发布时间】:2013-12-14 14:56:35
【问题描述】:
我的小程序由几个“模块”——翻译单元组成。一些实体是extern,但其他实体是static。
对于外部实体,我总是放一个前缀。您可以通过前面的static 告诉您内部的。不过,我正在寻找一种命名约定,清楚地表明该实体是
- 文件特定,从外部看不到
- 可以安全地更改而不会有更改 api-s 的风险
- 如果前面没有静态,这是一个错误。
Python 程序员使用前导下划线。 C 程序员是做什么的?
【问题讨论】:
-
一个有争议的声明,@P0W。在任何情况下,都不要使用前导下划线:它们是保留的(用于编译器等)。
-
Python 方式是约定使用前导下划线,在c 中,如果你使用
static,编译器将对符号的访问限制为当前翻译单元。你可以使用任何你喜欢的约定,事实上,前导下划线对我来说非常直观。 -
@Kninung double 保留前导下划线
-
为导出的函数名加上前缀,内部函数名不加前缀。然后只需使用
static。这表明 1. 符号是文件本地的; 2. 因此,可以在不破坏 API 的情况下进行更改; 3. 如果有static,但是 然后突然有没有static,这是一个可怕的错误,因为你要么发疯了,要么违背自己的意愿回到过去。 -
@H2CO3, C11, 7.1.3 说:以下划线开头的所有标识符始终保留用作普通和标记名称空间中具有文件范围的标识符。 这意味着像
_name这样的名称将(不应该)通过任何标题(或在链接期间)暴露给您的文件,我相信这也意味着如果您在文件中使用它是可以的,如果您确保它仅包含在该文件中。