C função pulava no tempo de execução
Pergunta
Eu tenho o seguinte código C em um programa:
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
printf("Test after print_foo()");
onde print_foo printf é o passado em 2D de caracteres com arquivos .c e .h adequados importados.
A saída do console é apenas as duas instruções PRINTF. Depuração, o tempo de execução nunca sequer entra no print_foo.
Alguma ideia?
Solução
void print_foo(char board[ROW][COL]);
não é uma chamada de função. É uma declaração.
Você provavelmente quer
print_foo(board);
Outras dicas
Este void
O prefixo está transformando a linha do meio em uma declaração de função print_foo
(e a char
Dentro dos parênteses significa que seria uma sintaxe inválida de outra forma). Para somente ligar print_foo
, mude a linha do meio para print_foo(board);
(E se board
é como você chamou essa matriz de caracteres 2D).
Parece uma declaração de função para mim - é por isso que sua nação foo não está sendo chamada.
Sua linha do meio é apenas uma declaração de função, não uma chamada de função.
Se você não declarou o protótipo anteriormente, precisará escrever isso:
printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
print_foo(board);
printf("Test after print_foo()");
Em suma, você deve definir/declarar print_foo antes de invocar, ou seu compilador sinalizará um erro !!