我想知道C / C ++标准库中使用的命名约定是否有一个名称,或者至少是一个可以查找规则的备忘单。 E.g。
push_back -- underscore used
setstate -- but not used here!
string::npos -- when to use abbreviations?
fprintf
...
C / C ++标准库中使用的命名约定是否具有特定名称?
答案 0 :(得分:29)
C / C ++使用着名的make-stuff-up-as-go-going-a命名约定。一般来说,你可以说的关于C / C ++标准库命名约定的唯一一致的事情是它不使用camel情况(C ++ STL模板类型名除外),它使用小写的类和函数名,并且(有时候) )使用下划线来分隔单词。但是下划线的使用更像是一个C ++的东西; C特别倾向于缩写词,例如strlen
,memcpy
。这可能是因为在UNIX的早期阶段就倾向于使用非常简洁的名称。
答案 1 :(得分:8)
C标准库必须遵循well defined rules以避免名称冲突。我对C ++一无所知。
如果您认为这是一团糟,您应该查看PHP库...
答案 2 :(得分:6)
我认为不同的人在不同的时间发明了几个小组并使用了一些不同的约定:C库,流,字符串,STL(容器+算法+迭代器)。我有一种感觉,后者可能被视为 约定,它为boost和C ++ 0x命名之类的东西设置了示例。
答案 3 :(得分:3)
可悲的事实是 - 没有真正的惯例。
将stdio函数的参数顺序视为一个痛苦的提醒。
答案 4 :(得分:0)
我没有答案,但至少,我不认为C和C ++使用相同的命名约定。
答案 5 :(得分:0)
我认为这两种命名约定都没有名称。
C和C ++标准中的命名约定虽然微不足道,但却有所不同。
特别是在C库中,与C ++库不同,没有函数或宏名称包含下划线(AFAICR)。
大多数C库命名约定都是由先例控制的;它标准化了现有的实践(截至1984年),发明非常少(通过<locale.h>
处理的区域设置是主要的)。
C ++库也是基于先例 - 但是一组不同的先例,我认为可以说STL在被C标准采用之前没有得到广泛使用,因为C库中的函数是。