4.3.3 Сокрытие Данных

4.3.3 Сокрытие Данных

Используя заголовочные файлы пользователь может опредлять явный интерфейс, чтобы обеспечить согласованное исползование типов в программе. С другой стороны, пользователь может обойти интерфейс, задаваемый заголовочным файлом, вводя в .c файлы описания extern.

Заметьте, что такой стиль компоновки не рекомендуется:

// file1.c: // «extern» не используется int a = 7; const c = 8; void f(long) (* /* ... */ *)

// file2.c: // «extern» в .c файле extern int a; extern const c; extern f(int); int g() (* return f(a+c); *)

Поскольку описания extern в file2.c не включаются вместе с определениями в файле file1.c, компилятор не может проверить согласованность этой программы. Следовательно, если только загрузчик не окажется гораздо сообразительнее среднго, две ошибки в этой программе останутся, и их придется икать программисту.

Пользователь может защитить файл от такой недисциплинрованной компоновки, описав имена, которые не предназначены для общего пользования, как static, чтобы их областью видмости был файл, и они были скрыты от остальных частей прораммы. Например:

// table.c: определения таблицы имен

#include «error.h» #include «string.h» #include «table.h»

const TBLSZ = 23; static name* table[TBLSZ];

name* look(char* p; int ins) (* /* ... */ *)

Это гарантирует, что любой доступ к table действительно будет осуществляться именно через look(). «Прятать» константу TBLSZ не обязательно.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

1.2. Анонимайзеры: сокрытие IP-адреса

Из книги автора

1.2. Анонимайзеры: сокрытие IP-адреса Представим, что вы собрались разово скрыть свой IP-адрес. Зачем это вам, мне дела нет. Снимаю с себя всякую ответственность, если ваши цели идут вразрез с существующим законодательством. Все мы помним, что Раскольников сделал с помощью


11. Сокрытие информации

Из книги автора

11. Сокрытие информации РезюмеНе выпускайте внутреннюю информацию за пределы объекта, обеспечивающего абстракцию.ОбсуждениеДля минимизации зависимостей между вызывающим кодом, который работает с абстракцией, и реализацией абстракции, внутренние данные такой


Сокрытие изображение стрелки на ярлыках

Из книги автора

Сокрытие изображение стрелки на ярлыках Для того чтобы убрать изображение стрелки на ярлыках, создайте следующие два ключа:[HKEY_CLASSES_ROOTpiffile] "IsShortcut"="" [HKEY_CLASSES__ROOTlnkfile]


Сокрытие приставки "Ярлык для…"

Из книги автора

Сокрытие приставки "Ярлык для…" Для того чтобы у создаваемых ярлыков не было приставки "Ярлык для…", измените следующий


Сокрытие различных элементов интерфейса

Из книги автора

Сокрытие различных элементов интерфейса Сокрытие дисков в папке Мой компьютер В папке Мой компьютер можно скрывать диски. Ниже представлены имена дисков и соответствующий ключ для их сокрытия. Для того чтобы скрыть сразу несколько дисков, суммируйте значения


Сокрытие дисков в папке Мой компьютер

Из книги автора

Сокрытие дисков в папке Мой компьютер В папке Мой компьютер можно скрывать диски. Ниже представлены имена дисков и соответствующий ключ для их сокрытия. Для того чтобы скрыть сразу несколько дисков, суммируйте значения ключей:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer]A:


Сокрытие элементов окна Свойства обозревателя

Из книги автора

Сокрытие элементов окна Свойства обозревателя Сокрытие вкладки ОбщиеКлюч:[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerControl Panel] Значение: "GeneralTab"=dword:00000001Сокрытие вкладки БезопасностьКлюч:[HKEY_CURRENT_USERSoftwarePoliciesMicrosoftInternet ExplorerControl Panel] Значение: "SecurityTab"=dword:00000001Сокрытие вкладки Содержание


Сокрытие информации

Из книги автора

Сокрытие информации Возьмите листок дорогой гербовой бумаги, посмотрите его на свет и вы сможете увидеть водяные знаки – узор, получаемый путем прижатия к бумаге в процессе сушки фигурной конструкции. Водяные знаки были изобретены в Италии в XIII веке. Итальянские