У меня проблема со статической переменной.об инициализации статической переменной и области действия
Я попытался сделать лабиринтную программу, используя стек.
Сначала он активируется, когда я помещаю все коды в один и тот же исходный файл.
Но после того, как я разделил основной на main.c
источник и другие функции на function.c
, произошла ошибка при статической переменной.
Это часть кода в файле function.c
, который вызывает проблему.
Я использовал EXIT_ROW
и EXIT_COL
как статическую переменную, и эти инициализированы при основной функции. И я использую EXIT_ROW
и EXIT_COLS
в других function.c
файле но когда я отладка этого файла, EXIT_ROW
и EXIT_CO
L не инициализировать вообще.
void main()
{
int xsize, ysize;
FILE *fp;
if(!(fp = fopen("input.txt", "r")))
{
fprintf(stderr, "FILE couldn't open\n");
exit(EXIT_FAILURE);
};
fscanf(fp, "%d %d", &ysize, &xsize);
EXIT_ROW = ysize;
EXIT_COL = xsize;
printf("%d %d\n", ysize, xsize);
init_maze(xsize, ysize, fp);
print_maze(xsize, ysize);
path();
}
Я не мог понять, почему это произошло .. EXIT_ROW и EXIT_COLS объявлены в заголовочном файле stack.h. может помочь мне, почему это произошло, и как я могу это исправить?
Пожалуйста, напишите [минимальный полный и проверяемый пример] (http://stackoverflow.com/help/mcve). В частности, поскольку вы спрашиваете о 'EXIT_ROW' и' EXIT_COLS', вам нужно точно указать *, как и где это определено. Но если они действительно объявлены глобальными «статическими», то, конечно, их можно получить только в каждом файле. Это то, что делает ключевое слово 'static'. Таким образом, на самом деле у вас будет две независимые версии каждой из этих переменных - одна для каждого файла. – kaylum
Благодарим вас за ответ. так, вы имеете в виду, что статический только в том же файле sorce мог бы получить доступ к статическому ключевому слову? не в тех же проектах? – ppappiya
Да. 'static' может означать две вещи: на« глобальном уровне »она говорит« только быть известна в этой единице компиляции »(ваш случай, видимо. Мы могли бы сказать определенно, если бы вы указали определение переменной и где оно находится. – tofro