我試圖通過在我的頭檔案中創建原型函式來修復我最后一個函式的隱式宣告。該實驗室將撰寫結構,目前我有 Main.c、RandomNums.h 和 RandomNums.c。我在 RandomNums.c 中的函式已經完成,但我不確定我應該如何在 RandomNums.h 中撰寫它
下面是我的 RandomNums.c 檔案,問題是 SetRandomVals 是 Main.c 中的隱式宣告
struct RandomNums SetRandomVals(int low,int high) {
struct RandomNums r;
r.var1= (rand() % (high -low 1)) low;
r.var2= (rand() % (high -low 1)) low;
r.var3= (rand() % (high -low 1)) low;
return r;
}
下面是我如何呼叫 SetRandomVals
RandomNums r = SetRandomVals(low, high);
我試過的原型是
SetRandomVals(int low,int high);
至于我的教授,我可能不會編輯 Main.c 檔案。
編輯:添加函式原型后,我的新錯誤是我有一個未定義的參考,因為它已經宣告我有一個隱式宣告。
/tmp/ccOhjlhD.o: In function `main':
main.c:(.text 0x63): undefined reference to `SetRandomVals'
collect2: error: ld returned 1 exit status
uj5u.com熱心網友回復:
原型應與定義中的函式頭相同:struct RandomNums setRandomVals(int low,int high)。
它應該在任何呼叫者呼叫函式之前宣告。
uj5u.com熱心網友回復:
回傳型別需要包含在宣告中。
為此,您需要在.h.
struct RandomNums { ... };
struct RandomNums setRandomVals(int low, int high);
順便說一句,您可以struct通過使用(可能是匿名的)結構來避免在任何地方使用這個詞。
typedef struct { ... } RandomNums;
RandomNums setRandomVals(int low, int high);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/348690.html
上一篇:在C程式中實作樓梯
