Функция C, пропущенная во время выполнения
Вопрос
У меня есть следующий C-код в программе:
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
printf("Test after print_foo()");
где print_foo printf - это переданный в 2-D массив символов с импортированными соответствующими файлами .c и .h.
Консольный вывод - это только два оператора printf.При отладке время выполнения даже не переходит в print_foo.
Есть какие-нибудь идеи?
Решение
void print_foo(char board[ROW][COL]);
это не вызов функции.Это декларация.
Вы, вероятно, хотите
print_foo(board);
Другие советы
Это void
префикс превращает среднюю строку в объявление функции print_foo
(и тот char
в круглых скобках означает, что в противном случае это был бы недопустимый синтаксис).Чтобы просто позвонить print_foo
, измените среднюю линию на print_foo(board);
(если board
это то, как вы назвали этот двумерный символьный массив).
Для меня это выглядит как объявление функции - вот почему ваша функция не вызывается.
Ваша средняя строка - это просто объявление функции, а не вызов функции.
Если вы ранее не объявляли прототип, то вам нужно написать это :
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
print_foo(board);
printf("Test after print_foo()");
Короче говоря, вы должны определить / объявить print_foo перед вызовом, иначе ваш компилятор выдаст ошибку !!