你把大括號的位置放錯了,sushu函數(shù)被定義在了main函數(shù)里面,但是按照C語言的規(guī)定,函數(shù)不允許嵌套定義,所以你的sushu相當于沒有定義(不知為何你的編譯器沒有報錯說不允許在函數(shù)內(nèi)定義函數(shù))。解決方法是把你最后面多出來的大括號移到main函數(shù)最后面。
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
把被調(diào)用函數(shù)寫到調(diào)用函數(shù)上面去,這樣就可以免去聲明。
這里你也可以把被調(diào)用函數(shù)剪切到調(diào)用函數(shù)上面去做一下測試。
編譯的命令錯了吧
gcc a.c b.c -o main
其他沒問題,即使不加b.h編譯也不會錯
大部分原因是鏈接時缺失了相關(guān)目標文件
首先編寫如下代碼
//test.h
#ifndef__TEST_H__
#define__TEST_H__
voidtest();
#endif
//test.c
#includestring.h
#includestdio.h
voidtest()
{
printf("justtestit\n");
}
//main.c
#include"test.h"
intmain(intargc,char**argv)
{
test();
return0;
}
然后輸入以下命令,你會得到兩個.o文件
$gcc-ctest.c
$gcc_cmain.c
編譯時報錯了,這是最典型的undefinedreference錯誤,因為在鏈接時發(fā)現(xiàn)找不到某個函數(shù)的實現(xiàn)文件。編寫如下命令即可。
$gcc-omainmain.o?test.o