R.3.1 Описания и определения

We use cookies. Read the Privacy and Cookie Policy

R.3.1 Описания и определения

Описание ($$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). Если функция никогда не вызывается и ее адрес никогда не используется, ее не нужно определять. Аналогично, если имя класса используется только так, что не требуется знать определения класса, то такой класс не надо определять.