Понимание предварительных определений в C и C++

Я знаю, что предварительное определение похоже на

int i;
int i;

и они объединяются в то время как связывание и реальное определение похоже на

int i=5;

и используется один раз, но какой смысл иметь много предварительных определений в коде (почему мне нужно объявить его дважды?)
и почему повторное предварительное определение дает ошибки в C++ и прекрасно работает в C

1 ответ

Потому что C++ не имеет предварительных определений. Это особенность языка C, которой нет в C++.

Поэтому, когда вы пишете int i;это реальное определение (без прикрепленного инициализатора). Согласно одному правилу определения, у вас может быть только одно определение (!).

Что касается примера того, почему вы хотите использовать их в C, честно говоря, я не могу думать об этом. Может быть, поэтому C++ не беспокоит!

Обратите внимание, что вы все равно можете объявить вещи так часто, как вам нравится. Для объектов вам нужно будет использовать extern сигнализировать об этом намерении:

extern int x;
extern int x;
extern int x;

int x = 0;
Другие вопросы по тегам