Изменение значения переменной в main, чтобы она была доступна для других функций (c )

#c

#c

Вопрос:

Я объявляю это:

 int xstartoftable;
void drawframe();

int main()
{
   int xstartoftable = 80-TLENGTH;
   drawframe();

   return 0
}
void drawframe();
{
   gotoXY(xstartoftable - 1, ystartoftable - 1);
}
  

Проблема в том, что при отладке значение xstartoftable является случайным, не равным значению в main() . Код составляет более 150 строк, это только те части, которые необходимы.

Комментарии:

1. Это не настоящий код. Пожалуйста, опубликуйте свой фактический код.

2. Это ваш фактический код? Для меня это не компилируется.

3. это somevalue константа? Что такое y ? В какой момент кода вы смотрите на x?

4. Убедитесь, что у вас нет int x нигде в main or i_use_x first .

5. Было бы проще ответить на ваш вопрос, если бы вы опубликовали свой фактический код. Скопируйте и вставьте код, который вы передали компилятору; не вводите его повторно.

Ответ №1:

Это потому, что вы повторно объявляете свою переменную внутри main.

 int main()
{
   int xstartoftable = 80-TLENGTH; //extra declaration here
   drawframe();

   return 0;
}
  

Вместо этого просто сделайте:

 int main()
{
   xstartoftable = 80-TLENGTH; //leave out declaration
   drawframe();

   return 0;
}
  

Это похоже на:

 int main()
{
   int x = 0;
   {
      int x = 1;
   }
   printf("%d",x);
   //will print 0
}
  

В некоторых компиляторах вы можете даже получить сообщение об ошибке.

Ответ №2:

int xstartoftable = 80-TLENGTH; объявляет другую xstartoftable , которая затеняет глобальную. у g есть удобное -Wshadow предупреждение, которое улавливает этот материал.

Вместо этого вам нужно присвоение xstartoftable = 80-TLENGTH; .