Ошибка глобальной переменной при компиляции в Xcode (программирование на C) - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь понять «Глобальные переменные», и я запускаю программу из учебника:

Выдает ошибку в «Xcode Version 9.3 (9E145)», и эта ошибка:

Переопределение 'glob' как символа другого типа

#include <stdio.h>

void add(void);
void sub(void);

int glob = 10;

int main(void)
{
  add();
  printf("Val = %d\n", glob);
  sub();
  printf("Val = %d\n", glob);
  return 0;
}

void add(void)
{
  glob++;
}

void sub(void)
{
  glob--;
} 

У меня вопрос:

Почему Xcode выдает эту ошибку?

1 Ответ

0 голосов
/ 29 апреля 2018

Не спрашивай почему. Но один из ваших компиляторов (или, может быть, это просто нечто вроде амбициозной подсветки синтаксиса) совершенно ясно убежден в том, что ранее рассматривал glob в качестве идентификатора чего-то другого.
В процессе поиска я не нашел ничего очевидного, и, конечно, странно, что в коротком коде, включающем только наиболее широко используемые включения, два компилятора имеют разные мнения.

Но непосредственный способ обойти вашу проблему должен состоять в том, чтобы просто переименовать glob во что-то другое. Использование более длинного имени, с добавлением немного большего предложения, не повредит. Слегка преувеличенное предложение будет

int globalvariableofunusedname = 10;

Это только ответ на ваш первый вопрос. Для второго (если вы оставите это здесь), проверьте правдоподобные комментарии. Однако я рекомендую разделить его на отдельный пост с вопросом.

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