Цитируется по Tanenbaum. Проектирование и реализация Minix Book. Третье издание. Стр. 143 параграф 3
PRIVATE определяется как синоним статического.Процедуры и данные, на которые нет ссылок вне файла, в котором они объявлены, всегда объявляются как ЧАСТНЫЕ, чтобы их имена не были видны за пределами файла, в котором они объявлены.Как правило, все переменные и процедуры должны быть объявлены с локальной областью видимости, если это возможно.PUBLIC определяется как пустая строка.Пример из kernel / proc.c может помочь прояснить это.Объявление
PUBLIC void lock_dequeue (rp)
выходит из препроцессора C как
void lock_dequeue (rp)
static
глобальные переменные имеют область видимости файла.Так что если вы определяете глобальную переменную или делаете функцию статической, то они будут видны только внутри этого файла.То есть вы сможете получить доступ только к тем из кода, который находится внутри этого файла, в многофайловой среде.
extern
глобальные переменные видны / доступны извне файла.Для определений функций extern
является необязательным, поскольку по умолчанию они видны из-за пределов видимости файла.
Хэш, определяющий эти вещи для PRIVATE
и PUBLIC
, является не чем иным, как добавлением слоя абстракции для лучшей интерпретации ипонимание того, что на самом деле предназначено.Как и в ООП-дизайне, у private и public есть интерпретации, добавление одинаковых имен указывает, какие свойства у них есть.