Понимание предварительных определений в 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;