Руководство по стилю заголовков С
 

Об этом руководстве

Это руководство не учебное руководство C или пошаговое руководство для преобразования заголовков. Это - руководство по стилю, который представляет идеальный заголовок, который мы хотели бы поддерживать. В настоящее время не все заголовки под нашим контролем соответствуют этому руководству на 100%, но работа идет, чтобы сделать это.

Общее


  • Переводы должны быть очень близки к оригиналу, так чтобы они выглядели знакомо и могли быть легко обновлены.
  • Идентификаторы (включая любой #defines) не должны быть изменены, конечно по возможности.
  • Маленькие файлы могут быть объединены в один больший заголовок, если они подключаются в любом случае и принадлежат той же библиотеке.
  • Оригинал лицензии должен быть сохранен.

Стиль кодирования


  • Заголовки должны работать с последней версией FreeBASIC.
  • Конфликты имен между многократными идентификаторами (из-за нечувствительности к регистра FreeBASIC) или идентификатором и ключевым словом FreeBASIC должны быть исправлены, добавляя подчеркивание к одному идентификатору.
  • Блоки extern "c" должны быть использованы вместо cdecl alias "..." объявлений функции или для типов указателей функции.
  • Директивы препроцессора (включая #defines) должны быть сохранены. Исключение: Удалите, если они служат только для выбора опций для различных компиляторов C, т.е. различия extern. В этом случае они могут быть удалены, если они не предоставляют поддержку для дальнейшего кода. При выборе компиляторов, выбор должен быть сделан в пользу GNU C.
  • FreeBASIC ключевые слова должны быть в нижнем регистре.

Работа с конструкциями, которые не поддерживаются в FreeBasic


  • Inline функции должны быть преобразованы в макросы в определенных случаях.
  • Директивы препроцессора в описаниях структуры, теле функции, и т.п., возможно должны быть перемещены в основную область видимости, потому что в FreeBASIC они в своей области видимости.
  • Декларации , распределенные по нескольким линиям с директивами препроцессора между ними (Для примера, декларации функции или инициализаторы массива ) потребуется переписать вручную