2014-09-03 101 views
2

IIRC不应使用内置名称(例如open,read等),以下划线和大写字母开头的名称(例如_Thread),以双下划线开头的名称或包含它(例如__GCC__)。对于POSIX兼容性更多(请参阅GCC命名约定)。C命名约定:隐藏变量/宏

我正在创建一个新库,其中每个函数,类型或宏都以前缀开头(如果它是宏,则用大写字母写)。但是,如果我创建一个全局但隐藏的变量,我怀疑我必须使用哪个名称。或者如果它是一个宏。无论如何,它将被隐藏起来。我会使用任何命名约定吗?我认为我可以使用__mycustomprefix_global,但我不确定。提前致谢!

UPDATE 我知道关于static并在任何可能的地方使用它。但是,我正在谈论变量/函数/宏必定是全局的情况。

+2

如果在翻译单元之外不需要变量,则声明它为“静态”,不必担心命名,因为即使对链接器它也不可见。 – DevSolar 2014-09-03 11:16:34

+0

@DevSolar我应该写一下。是的,我知道它并在任何可能的地方使用它。但是,我正在谈论变量/函数/宏必定是全局的情况。 :-( – ghostmansd 2014-09-03 11:19:54

+0

前缀是好的,BTW:不要忘记以'mem'或'str'开始的名字,这些也是为库保留的 – wildplasser 2014-09-03 11:32:30

回答

1

原则上,以前导下划线开头的标识符保留给新的语言关键字,C运行时和标准库以及编译器内在函数,所以您不应该使用它们。

但是,如果您使用命名空间前缀,碰撞的几率可能很低,所以在实践中无关紧要。就我个人而言,我会用尾部下划线去。