Скажем, у меня есть глобальная переменная, объявленная в заголовке:Выведение тип глобальной переменной
extern long global_var;
было бы разумно, чтобы компилятор затем вывести тип, если переменная определена в источнике:
auto global_var;
Я вижу, по крайней мере, некоторые плюсы:
- избежать дублирования кода, то есть, когда мы изменяем тип в заголовке, то не должны с висящий его в исходном файле
- меньше ошибок, если переменная не объявлена ранее, он не будет компилировать
Подобное может работать для статических членов класса.
Но в настоящее время это не представляется возможным. Существуют ли недостатки, которые перевешивают эти выгоды?
* Каким образом компилятор мог бы вывести тип? Просто увидев 'auto global_var;' (или даже 'extern auto global_var;'), компилятор не знает, какой тип переменной существует, особенно если это просто объявление с определением и инициализацией в другой единицы перевода. –
Есть ли недостатки, которые перевешивают эти преимущества? Эти вещи разрешаются при соединении. Так что это зависит от компоновщика. Следовательно, компилятор не будет иметь понятия, как вывести 'auto'. – 101010
@JoachimPileborg компилятор сможет вывести тип, потому что он явно указан в заголовке, а затем в исходном файле он уже знает, что это за тип. – Slava