C/C++ stdlib命名约定的名称?

Ara*_*raK 28 c c++ naming-conventions

我想知道C/C++标准库中使用的命名约定是否有一个名称,或者至少是一个可以查找规则的备忘单.例如

push_back    -- underscore used
setstate     -- but not used here!
string::npos -- when to use abbreviations?
fprintf
...
Run Code Online (Sandbox Code Playgroud)

C/C++标准库中使用的命名约定是否具有特定名称?

Cha*_*via 29

C/C++使用着名的make-stuff-up-as-go-going-a命名约定.一般来说,你可以说的关于C/C++标准库命名约定的唯一一致的事情是它不使用camel情况(C++ STL模板类型名除外),它使用小写的类和函数名,并且(有时候) )使用下划线来分隔单词.但是下划线的使用更像是一个C++的东西; 下,在特定的倾向缩写词,例如strlen,memcpy.这可能是因为在UNIX的早期阶段倾向于使用非常简洁的名称.

  • 前ansi编译器只考虑符号的前6个字符是为了与Fortran,IIRC兼容,所以符号`strlen`,`strlenxyz`和`strlenohmygodwhathaveidone`都指的是同一个东西.因此,为了与ANSI前编译器兼容,ANSI C标准确保所有标准库符号的前6个字符彼此唯一. (21认同)
  • "倾向于使用非常简洁的名字来表示事物",这要归功于80个字符或更小的终端; 编译器的资源限制; 对霍夫曼编码宇宙的天生渴望; 或以上所有. (19认同)

ntd*_*ntd 8

C标准库具有明确定义的规则,您必须遵循这些规则以避免名称混淆.我对C++一无所知.

如果您认为这是一团糟,您应该查看PHP库...


Unc*_*ens 6

我认为不同的人在不同的时间发明了几个小组并使用了一些不同的约定:C库,流,字符串,STL(容器+算法+迭代器).我有一种感觉,后者可能会被视为公约,其中规定对于像升压和C++ 0x中命名的例子.


Eli*_*sky 4

可悲的事实是——没有真正的惯例。

将 stdio 函数的参数顺序视为一个痛苦的提醒。

  • 实际上,这是有充分理由的。使用传统的 C 函数调用 ABI,使用相同的最后一个参数调用多个函数(即 `for (i = 0; i < n; i++) { fputs(s[i], stdout); fputc('\n', stdout ; }` 比第一个参数不变要便宜。但是,对于像 `printf` 这样的可变参数函数,固定参数必须位于参数列表的开头。 (3认同)