В чем ошибка в коде C? - PullRequest
       1

В чем ошибка в коде C?

0 голосов
/ 10 сентября 2011

У меня есть такой код:

#include<stdio.h>
int main()
{
    extern int i;
    i = 20;
    printf("%d\n", sizeof(i));
    return 0;
}

Я получаю такую ​​ошибку:

In function `main':
undefined reference to `i'

Несмотря на то, что я определил i, почему возникает ошибка?Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 10 сентября 2011

Вы объявили, что я определен в отдельном файле, но не связаны с внешним файлом.

Если вы удалите ключевое слово extern, оно будет работать так, как вы ожидаете.

1 голос
/ 10 сентября 2011

Ключевое слово extern объявляет переменную или функцию и указывает, что оно имеет внешнюю связь (его имя видно из файлов, отличных от того, в котором оно определено).При изменении переменной extern указывает, что переменная имеет статическую длительность (она выделяется при запуске программы и освобождается при ее завершении).Переменная или функция может быть определена в другом исходном файле или позже в том же файле.Объявления переменных и функций в области видимости по умолчанию являются внешними.

Где определено i?

Попробуйте это.

#include<stdio.h>
int main()
{
  int i;
  i = 20;
  printf("%d\n", sizeof(i));
  return 0;
}
0 голосов
/ 10 сентября 2011

Ключевое слово "extern" означает, что вы говорите компилятору: "Эта переменная определена где-то еще, просто используйте ее и поверьте мне, что она будет доступна во время компоновки."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...