2009-11-22 55 views
1

我有一個程序下面的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。

任何想法?

+0

糟糕。感謝球員們的及時迴應。 – Brian 2009-11-22 00:39:24

回答

1
void print_foo(char board[ROW][COL]); 

不是函數調用。這是一個聲明。

你可能想

print_foo(board); 
+1

字符需要去:) – JohnIdol 2009-11-22 00:37:44

+0

「你可能想要」的行可能是不正確的。請參閱Alex Martelli的回答,以獲得更多的上下文和更可能的答案。 – 2009-11-22 00:42:12

+0

哎呀。 char也是。 – 2009-11-22 00:58:52

2

這看起來像一個函數聲明,我 - 這就是爲什麼你富,nction不會被調用。

2

你的中間線只是一個函數聲明,而不是函數調用。

3

void前綴使中間線成的功能print_foo的聲明(和括號內的char意味着這將是無效的語法以其他方式)。只需要致電print_foo,將中間行更改爲print_foo(board);(如果board是您如何命名該2-D字符數組)。

2

如果你沒有申報的原型以前那麼你必須這樣寫:調用之前

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

總之你必須定義/聲明print_foo,或者你的編譯器就會出錯!