![](/img/trans.png)
[英]I'm trying to write a C program to store integers from a file into an array, but it doesn't work. Can someone help me?
[英]Could someone help me with that C problem? When I try to run it doesn't return anything
#include <stdio.h>
#include <stdlib.h>
double cube(double num) {
return num * num * num;
}
int main(){
Answer(cube(3.0));
return 0;
}
void Answer(double cube()) {
printf("Answer: %.1f\n", cube());
}
如果您嘗試運行它,至少在我的計算機上不起作用。 我試圖改變一些東西,比如添加更多的括號,但我找不到解決方案。
我不認為你的代碼編譯。 這里有一些快速修復:
#include <stdio.h>
#include <stdlib.h>
void Answer(double); // forward declaration, you could also define Answer before main
double cube(double num) {
return num * num * num;
}
int main(){
Answer(cube(3.0));
return 0;
}
void Answer(double value) {
printf("Answer: %.1f\n", value);
}
或者更簡單,將Answer()
function 移到main()
上方的cube()
) 下方。
C 文件在Single-Pass中編譯。 這意味着在使用 function 之前,編譯器必須知道它。 (它必須在到達使用點之前已經知道它是什么)
在main()
Answer()
) (並且沒有前向聲明),當編譯器到達main()
並看到Answer()
時,它還不知道它是什么。 所以一個解決方法是提供一個原型,一個前向聲明,向編譯器保證是的,這個 function 將在源文件(或其他地方)中定義。
您的另一個選項(推薦用於短函數)是簡單地按順序訂購 function 的定義,以便在使用之前定義每個。 這自然會以上面定義的所有函數結束main()
,但這並沒有錯。
隨着您使用的函數的大小和數量的增長——那么提供前向聲明以幫助以一種邏輯方式組織代碼是有益的(方便的),它可以在源文件和 header 文件之間以最小的努力進行拆分. 在大型源文件中,按照它們出現在main()
下方的順序組織前向聲明,還提供了定義函數的路線圖(這可以幫助您導航到需要 go 的位置,或提供快速復制/粘貼進入搜索對話框)
@selbie 已經為您提供了使用原型或前向聲明的答案。 一個簡單的重新排序將是:
#include <stdio.h>
double cube (double num)
{
return num * num * num;
}
void Answer (double value)
{
printf ("Answer: %.1f\n", value);
}
int main (void) {
Answer (cube (3.0));
return 0;
}
(注意:避免在代碼中包含不需要的 header 文件)
你想如何處理它完全取決於你,但這些是 go 進入你決定的正常考慮因素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.