Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Защита от некорректного использования extern в C

Есть ли какая-то - на уровне стандарта - защита от некорректного использования объявлений extern в C? Например, пусть в одном файле есть
extern int global;
в другом -
double global = 3.1416;
Ведь mangling имен - это только в C++, который, конечно, в этой ситуации защитит (на уровне линковщика), в отличие от C, который должен скомпилировать и не поморщиться...
Получается, что в обычном C - только совесть программиста препятствие к некорректному использованию? никакого иного механизма нет (помимо вынести объявление extern в заголовочный файл и включать его во все файлы проекта)?


Ответ

В принципе на практике следует поступать именно так: объявление с extern должно располагаться в заголовочном файле, а определение (с инициализатором) в некоем файле реализации включающем этот заголовочный файл. Тогда есть надежда, что такие очевидные ошибки вызовут диагностическое сообщение от компилятора.
Никакой другой "официальной" защиты в С нет.

Комментариев нет:

Отправить комментарий