1

プログラムに次の C コードがあります。

printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
printf("Test after print_foo()");

ここで、print_foo printf は、適切な .c および .h ファイルがインポートされた 2 次元文字配列で渡されます。

コンソール出力は、2 つの printf ステートメントのみです。デバッグ中、ランタイムは print_foo にステップすることさえありません。

何か案は?

4

5 に答える 5

3

そのvoid接頭辞は、真ん中の行を関数の宣言にしますprint_foo(そして、char括弧内は、そうでなければ無効な構文になることを意味します)。を呼び出す print_fooには、中央の行をに変更しますprint_foo(board);boardその2次元文字配列に名前を付けた場合)。

于 2009-11-22T00:38:40.977 に答える
2

それは私には関数宣言のように見えます-それがあなたのfoo-nctionが呼び出されていない理由です。

于 2009-11-22T00:37:07.287 に答える
2

真ん中の行は単なる関数宣言であり、関数呼び出しではありません。

于 2009-11-22T00:37:12.090 に答える
2

以前にプロトタイプを宣言していなかった場合は、次のように記述する必要があります。

printf("Test before print_foo()");
void print_foo(char board[ROW][COL]);
print_foo(board);
printf("Test after print_foo()");

つまり、呼び出す前にprint_fooを定義/宣言する必要があります。そうしないと、コンパイラがエラーにフラグを立てます。

于 2009-11-22T01:26:58.793 に答える
1
void print_foo(char board[ROW][COL]);

関数呼び出しではありません。宣言です。

あなたはおそらくしたいです

print_foo(board);
于 2009-11-22T00:36:54.293 に答える