Что такое одно правило определения в C ++? - PullRequest
36 голосов
/ 16 ноября 2010

Что именно говорит одно определение в C ++? Единственный надежный случай, который я могу найти, это Язык программирования C ++, третий. изд., с. 9.2.3 . Есть ли официальное определение правила, кроме этого?

1 Ответ

31 голосов
/ 16 ноября 2010

Правда в стандарте (3.2 Одно правило определения):

Ни одна единица перевода не должна содержать более одного определения любой переменной, функции, типа класса, типа перечисления или шаблона.*

[...]

Каждая программа должна содержать ровно одно определение каждой не встроенной функции или объекта , которая используется в этой программе ;Диагностика не требуется.Определение может явным образом появиться в программе, оно может быть найдено в стандартной или пользовательской библиотеке или (при необходимости) неявно определено (см. 12.1, 12.4 и 12.8).Встроенная функция должна быть определена в каждой единице перевода, в которой она используется.

...