Подтвердить что ты не робот

Название соглашения о присвоении имен stdlib C/С++?

Интересно, имеет ли соглашение об именовании, используемое в стандартных библиотеках C/С++, имя или, по крайней мере, чит-лист, где я могу искать правила. Например.

push_back    -- underscore used
setstate     -- but not used here!
string::npos -- when to use abbreviations?
fprintf
...

Имеет ли какое-либо название условное обозначение, используемое в стандартных библиотеках C/С++?

4b9b3361

Ответ 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 были.