Правило одного определения

Правило одного определения

Правило одного определения (One Definition Rule) (ODR) один из основных принципов языка программирования C++.

Вкратце, положения ODR выглядят так:

  1. В пределах любой единицы трансляции шаблон, тип данных, функция, или объект не могут иметь более одного определения. Некоторые могут иметь неограниченное число объявлений. Определение порождает сущность.
  2. В пределах программы (совокупности всех единиц трансляции) объект или не-inline функция не могут иметь больше одного определения; если объект или функция используются, у каждого из них должно быть строго по единственному определению. Можно объявить объект или функцию, которые не будут использованы в программе, в этом случае не потребуется и их определения. Ни в коем случае не должно быть более одного определения.
  3. Некоторые сущности, например, типы, шаблоны или внешние inline функции, могут определяться в более чем одной единице трансляции. Для данной сущности, каждое определение должно быть одним и тем же. Объекты или функции, не являющиеся внешними, в разных единицах трансляции имеют разные сущности, даже если их имена и типы совпадают.

Некоторые нарушения ODR могут быть обнаружены компилятором. Остальные, а это в первую очередь касается программ, состоящих из нескольких небольших файлов, пропускаются (программист должен самостоятельно о них позаботиться).

В своей знаменитой книге «Введение в язык C++» Бьёрн Страуструп приводит следующий пример:

 // file1.c:
     int a = 1;
     int b = 1;
     extern int c;
 // file2.c:
     int a;
     extern double b;
     extern int c;

В данном примере 3 ошибки: a определено дважды (int a; является определением, которое означает int a=0;), b описано дважды с разными типами, а c описано дважды, но не определено. Эти виды ошибок (ошибки компоновки) не могут быть обнаружены компилятором, который за один раз видит только один файл. Компоновщик, однако, их обнаруживает.

Дополнительная информация



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Правило одного определения" в других словарях:

  • Правило буравчика — Прямой провод с током. Ток (I), протекая через провод, создаёт магнитное поле (B) вокруг провода. Правило буравчика (правило винта), или правило правой руки  варианты мнемониче …   Википедия

  • правило — 3.1.17 правило: Положение нормативного документа, описывающее действие, которое должно быть выполнено. [ГОСТ 1.1, статья 6.1.2] Источник …   Словарь-справочник терминов нормативно-технической документации

  • Определения — 3.2. Определения ПРОГРАММНОЕ СРЕДСТВО программа, снабженная комплектом программных документов. ПРОГРАММНЫЕ ДОКУМЕНТЫ документы, содержащие сведения, необходимые для разработки, изготовления, сопровождения и эксплуатации программы. Рекомендуемый… …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ 16110-82: Трансформаторы силовые. Термины и определения — Терминология ГОСТ 16110 82: Трансформаторы силовые. Термины и определения оригинал документа: 8.2. Аварийный режим трансформатора Режим работы, при котором напряжение или ток обмотки, или части обмотки таковы, что при достаточной… …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ 22515-77: Связь телеграфная. Термины и определения — Терминология ГОСТ 22515 77: Связь телеграфная. Термины и определения оригинал документа: 4. Абонентский комплект Устройство, предназначенное для сопряжения коммутационного оборудования с каналом связи, соединяющим оконечную установку с… …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ Р МЭК 60050-826-2009: Установки электрические. Термины и определения — Терминология ГОСТ Р МЭК 60050 826 2009: Установки электрические. Термины и определения оригинал документа: ( длительный ) допустимый ток ((continuous) current carrying capacity ampacity (US)): Максимальное значение электрического тока, который… …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ 7.60-2003: Система стандартов по информации, библиотечному и издательскому делу. Издания. Основные виды. Термины и определения — Терминология ГОСТ 7.60 2003: Система стандартов по информации, библиотечному и издательскому делу. Издания. Основные виды. Термины и определения оригинал документа: автореферат диссертации: Научное издание в виде брошюры, содержащее составленный… …   Словарь-справочник терминов нормативно-технической документации

  • СО 34.21.308-2005: Гидротехника. Основные понятия. Термины и определения — Терминология СО 34.21.308 2005: Гидротехника. Основные понятия. Термины и определения: 3.10.28 аванпорт: Ограниченная волнозащитными дамбами акватория в верхнем бьефе гидроузла, снабженная причальными устройствами и предназначенная для размещения …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ Р 52953-2008: Материалы и изделия теплоизоляционные. Термины и определения — Терминология ГОСТ Р 52953 2008: Материалы и изделия теплоизоляционные. Термины и определения оригинал документа: 4.7 (теплоизоляционная) пробковая плита: Готовое изделие, полученное из гранулированной пробки, вспученной и связанной при нагревании …   Словарь-справочник терминов нормативно-технической документации

  • ГОСТ Р 53636-2009: Целлюлоза, бумага, картон. Термины и определения — Терминология ГОСТ Р 53636 2009: Целлюлоза, бумага, картон. Термины и определения оригинал документа: 3.4.49 абсолютно сухая масса: Масса бумаги, картона или целлюлозы после высушивания при температуре (105 ± 2) °С до постоянной массы в условиях,… …   Словарь-справочник терминов нормативно-технической документации


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»