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?

Foi útil?

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 !!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top