Название соглашения о присвоении имен stdlib C/С++?
Интересно, имеет ли соглашение об именовании, используемое в стандартных библиотеках C/С++, имя или, по крайней мере, чит-лист, где я могу искать правила. Например.
push_back -- underscore used
setstate -- but not used here!
string::npos -- when to use abbreviations?
fprintf
...
Имеет ли какое-либо название условное обозначение, используемое в стандартных библиотеках C/С++?
Ответы
Ответ 1
C/С++ использует знаменитое соглашение о присвоении имен. В общем, единственное, что можно сказать о стандартном именовании библиотек C/С++, состоит в том, что он не использует случай верблюда (за исключением шаблонов типов С++ STL), он использует имена классов и функций в нижнем регистре и (иногда ) использует символы подчеркивания для разделения слов. Но использование символов подчеркивания больше связано с С++; C, в частности, имеет тенденцию сокращать слова, например. strlen
, memcpy
. Вероятно, это связано с тенденцией использовать очень короткие названия для вещей в ранние дни UNIX.
Ответ 2
В стандартной библиотеке C есть четко определенные правила, которые вы должны соблюдать, чтобы избежать конфликтов имен. Я ничего не знаю о С++.
Если вы считаете, что это беспорядок, вы должны проверить библиотеку PHP...
Ответ 3
Я думаю, что разные группы придумали разные люди и использовали несколько разных конвенций: библиотеки C, потоки, строки, STL (контейнеры + алгоритмы + итераторы). У меня такое чувство, что последнее можно рассматривать как соглашение, которое устанавливает пример для таких вещей, как boost и С++ 0x naming.
Ответ 4
Печальная истина - нет реального соглашения.
См. порядок аргументов функций stdio как мучительное напоминание.
Ответ 5
У меня нет ответа, но, по крайней мере, я не думаю, что C и С++ используют одно и то же соглашение об именах.
Ответ 6
Я не думаю, что есть имя для любого набора соглашений об именах.
Соглашения об именах в стандартах C и С++ различны, хотя и слабо связаны.
В частности, в библиотеке C никакая функция или имя макроса не содержит символ подчеркивания (AFAICR), в отличие от библиотеки С++.
Большая часть правил именования библиотеки C была контролирована прецедентом; он стандартизовал существующую практику (примерно в 1984 году), причем было замечательно небольшое количество изобретений (главным образом, обработка локалей через <locale.h>
).
Библиотека С++ также была основана на прецеденте, но другой набор прецедентов, и я думаю, что можно утверждать, что STL не был широко распространен до его внедрения стандартом, поскольку функции в библиотеке C были.