Gio*_*dis 8 c++ program-entry-point function
我最近学习了 C++ 并决定尝试制作一个函数。但是,我的函数遇到了一个问题func()
,即使事先声明,它也只有放在main()
函数之前才有效。
如果我把它放在main()
函数之后,系统会告诉我“没有匹配的函数可以调用func
”。
注意:func2
另一方面,即使放在main()
函数之前或之后,函数也能工作。
所以这是代码:
#include <stdio.h>
#include <iostream>
void func2();
int func();
int main()
{
int y=2;
std :: cout << "Hello World\n" << func(y) << "\n";
func2();
return 0;
}
int func(int x)
{
x *= 2;
return x;
}
void func2()
{
std :: cout << "Hello there";
}
Run Code Online (Sandbox Code Playgroud)
pra*_*pin 15
在 C 语言中,声明的int func();
意思是一个带有未指定数量的任何类型参数的函数,返回一个 int
.
在 C++ 语言中,相同的声明int func();
意味着一个没有任何参数的函数,返回一个 int
.
因此,在 C++ 中,func
带有类型参数的的定义int
是一个重载。对于编译器来说,它是一个不同的函数,在使用前没有在原始代码中声明,因此会发出错误。
但在 C 中,这将是完全合法的。
int func();
Run Code Online (Sandbox Code Playgroud)
和
int func(int x)
Run Code Online (Sandbox Code Playgroud)
看到不同?第一个应该是
int func(int x);
Run Code Online (Sandbox Code Playgroud)
你告诉编译器这func
是一个没有参数的函数,然后当你试图用一个参数调用它时,编译器说“没有匹配的函数”。