Название C / C ++ stdlib именования? - PullRequest
28 голосов
/ 14 ноября 2009

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

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

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

Ответы [ 6 ]

29 голосов
/ 14 ноября 2009

C / C ++ использует известное соглашение о присвоении имен "сделай все по ходу дела". В целом, единственное, что можно сказать о соглашении об именах стандартной библиотеки C / C ++, это то, что он не использует регистр верблюдов (за исключением типов названий шаблонов C ++ STL), он использует строчные буквы классов и имен функций и (иногда ) использует подчеркивания для разделения слов. Но использование подчеркивания - это скорее вещь C ++; C, в частности, имеет тенденцию сокращать слова, например, strlen, memcpy. Это, вероятно, является результатом тенденции использовать очень краткие имена для вещей в первые дни UNIX.

8 голосов
/ 14 ноября 2009

Стандартная библиотека C имеет четко определенные правила , которым вы должны следовать, чтобы избежать конфликтов имен. Я ничего не знаю о C ++, хотя.

Если вы думаете, что это беспорядок, вы должны проверить библиотеку PHP ...

6 голосов
/ 14 ноября 2009

Я думаю, что есть несколько групп, изобретенных в разное время разными людьми и использующих несколько разные соглашения: библиотеки C, потоки, строки, STL (контейнеры + алгоритмы + итераторы). У меня есть ощущение, что последнее можно рассматривать как соглашение, которое служит примером для таких вещей, как повышение и именование C ++ 0x.

3 голосов
/ 14 ноября 2009

Печальная правда в том, что нет никакого реального соглашения.

См. Порядок аргументов функций stdio как болезненное напоминание.

0 голосов
/ 14 ноября 2009

Я не думаю, что есть название для какого-либо соглашения об именах.

Соглашения об именах в стандартах C и C ++ отличаются, хотя и слабо связаны.

В частности, в библиотеке C ни одно имя функции или макроса не содержит подчеркивания (AFAICR), в отличие от библиотеки C ++.

Большинство соглашений по именованию библиотек C контролировалось прецедентом; она стандартизировала существующую практику (примерно с 1984 года), с удивительно небольшим количеством изобретений (обработка локали через <locale.h> является основной).

Библиотека C ++ также была основана на прецеденте - но другом наборе прецедентов, и я думаю, что можно утверждать, что STL не был так широко распространен до его принятия стандартом, как функции в библиотеке C.

0 голосов
/ 14 ноября 2009

У меня нет ответа, но, по крайней мере, я не думаю, что C и C ++ используют одно и то же соглашение об именах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...