|
|
Описание ($$r.7) делает известным в программе одно или несколько имен. Описание считается определением, если только оно не описывает функцию без задания ее тела ($$R.8.3), не содержит описателя extern ($$R.7.11), не имеет части инициализации или тела функции, не является описанием статического члена данных в описании класса ($$R.9.4), не является описанием имени класса ($$R.9.1), не является описанием typedef ($$R.7.1.3). Ниже приведены примеры определений:
int a; extern const c = 1; int f(int x) { return x+a; } struct S { int a; int b; }; enum { up, down };
тогда как ниже следуют только описания:
extern int a; extern const c; int f(int); struct S; typedef int Int;
Для каждого объекта, функции, класса и элемента перечисления, используемых в программе, должно быть только одно определение ($$R.3.3). Если функция никогда не вызывается и ее адрес никогда не используется, ее не нужно определять. Аналогично, если имя класса используется только так, что не требуется знать определения класса, то такой класс не надо определять.
| |