提问人:JOJO100 提问时间:7/4/2022 最后编辑:JensJOJO100 更新时间:7/4/2022 访问量:82
当我尝试调用函数时,它显示错误
when i try to call a function it shows error
问:
我对编码很陌生。我使用了一个简单的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
Sayhi();
return 0;
}
void Sayhi()
{
printf("hi");
}
因此,当我编译代码时,它说函数“sayhi”未在此范围内声明。 我什至尝试了使用“void”作为函数的不同代码,但它不起作用。
答:
1赞
paulsm4
7/4/2022
#1
这应该可以工作 - 只需在使用它之前声明并定义“Sayhi()”:
#include <stdio.h> #include <stdlib.h> void Sayhi(); { printf("hi"); } int main() { Sayhi(); return 0; }
一个“更好”的方法是为“Sayhi()”创建一个原型:
#include <stdio.h> #include <stdlib.h> void Sayhi(void); int main() { Sayhi(); return 0; } void Sayhi(); { printf("hi"); }
问:那么什么是“原型”?
https://www.programiz.com/c-programming/c-user-defined-functions
函数原型只是一个函数的声明, 指定函数的名称、参数和返回类型。事实并非如此 包含函数体。
函数原型向编译器提供以下信息: 函数稍后可能会在程序中使用。
原型应始终列出函数的参数。如果没有参数,则应列出“void”。
随着应用程序大小和复杂性的增加,原型的价值就会大放异彩。您需要将代码移出“main()”并移动到单独的 .c 源文件(例如“mycomponent.c”)和相应的头文件(例如“myheader.h”)中。
另外需要注意的是:您应该始终对原型中的变量进行 NAME 命名(例如 .void myfunc(int i);
问:您是否了解为什么会出现编译错误(在使用函数之前需要以某种方式声明该函数),以及如何修复它?
评论
4赞
aschepler
7/4/2022
void Sayhi();
不是一个原型,而是一个危险的声明,允许传递参数。 是一个原型。void Sayhi(void);
评论
Sayhi()
void sayHi(void);
int main(void) {...}
printf("hi\n");