![](/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.