Несмотря на то, что он читал K & R и даже преподавал классы C, я смущающе не могу полностью понять, что можно назвать "современным".
Кажется, в современном программировании много неписаных условностей, которые, насколько я знаю, нигде не документированы.
Возьмем, к примеру, исходный код SQLite. В нем я нахожу, например:
SQLITE_API int sqlite3_close(sqlite3 *);
Что означает SQLITE_API
? Как это даже синтаксически правильно?
Или это:
#ifndef _SQLITE3_H_
#define _SQLITE3_H_
Есть ли принятое соглашение где-нибудь, когда префикс макросов с символами подчеркивания? Иногда я вижу макросы с двумя символами подчеркивания.
Или как использовать типы фиксированного размера, такие как uint32
и т.д. Когда следует использовать эту практику, а когда нет? Как насчет типа new-ish bool
, когда он должен быть предпочтительнее простых ints?
Вот некоторые из вопросов, которые я задаю себе, когда читаю исходный код других людей. Есть ли ссылка где-нибудь, которая могла бы помочь мне ответить на эти вопросы?