У меня есть несколько сомнений относительно использования ключевого слова extern с переменными в C. Я действительно просматривал ссылки, связанные с этим вопросом. Тем не менее, есть еще несколько вещей, которые я не собирайте очень хорошо
Как определяются внешние переменные?
#include<stdio.h>
main()
{
extern int i;
printf ("\n%d ",i)) ;
}
int i = 31 ;
В приведенном выше коде, как же я получаю отпечатано до его утверждения определения?
Теперь в следующем коде:
#include<stdio.h>
int x = 21 ;
main()
{extern int i;
i=20;
printf ("\n%d ", i) ;
}
Не является ли утверждение "я = 20;" утверждение определения? Я получаю сообщение об ошибке. Это потому, что я пытаюсь изменить переменную, определенную в каком-то другом исходном файле? Если это так, то как это утверждение «int i = 31;» в самом верхнем фрагменте кода право использовать?
Кроме того, я читал: «int i;» является определением. Я действительно не понимаю, как это сделать.
Я считаю, что оба должны скомпилировать, но второй из них не будет связывать (* срабатывает clang для его проверки *) – Christoph
ok, первый пример не удалось скомпилировать, но не из-за объявлений переменных - есть посторонняя закрывающая скобка ... – Christoph
@ Кристоф второй из-за ошибки говорит, что 'i' является' extern', но на самом деле не обеспечивает его одновременное использование. Прокомментируйте все строки, в которых '' '' 'extern', и он будет компилироваться. – Nobilis