为什么我的HelloWorld函数没有在这个作用域中声明?
Why is my HelloWorld function not declared in this scope?
#include <iostream>
using namespace std;
int main()
{
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
我得到以下编译错误与g++:
l1.cpp: In function 'int main()':
l1.cpp:5:15: error: 'HelloWorld' was not declared in this scope
您需要声明或定义函数才能使用它。否则,它不知道HelloWorld()
作为一个函数存在。
添加到main函数前:
void HelloWorld();
或者,您可以将HelloWorld()
的定义移动到main()
之前:
#include <iostream>
using namespace std;
void HelloWorld()
{
cout << "Hello, World" << endl;
}
int main()
{
HelloWorld();
return 0;
}
你必须在使用这个函数之前声明它:
#include <iostream>
using namespace std;
void HelloWorld();
int main()
{
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
或者您可以将HelloWorld()
的定义移到main()
之前
您需要转发声明HelloWorld()
,以便main
知道它是什么。像这样:
#include <iostream>
using namespace std;
void HelloWorld();
int main()
{
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
由于某些没有提到的原因,还有一种可能性,即使用外部声明:
#include <iostream>
using namespace std;
int main()
{
extern void HelloWorld();
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
当您不想将函数名引入命名空间范围时,更可取。
您需要在调用之前有函数的原型,或者在调用之前有整个函数。
第一个是:
void HelloWorld();
int main() {
HelloWorld();
return 0;
}
void HelloWorld() {
cout << "Hello, World" << endl;
}
第二种方式是:
void HelloWorld() {
cout << "Hello, World" << endl;
}
int main() {
HelloWorld();
return 0;
}
所有这些答案都是正确的,但奇怪的是,这个答案是正确的:
struct Hello {
static int main() { World(); return 0; } /* note: World() not declared yet */
static void World() { std::cout<<"Hello World"; }
};
int main() { return Hello::main(); }
你必须把函数放在main函数之前。
在c++中,您需要在调用它们之前定义或至少声明函数。
到目前为止你所做的事情是这样的:
int main()
{
cout << b;
int b = 10;
}
所以你也可以这样尝试:
#include <iostream>
using namespace std;
void HelloWorld();
int main()
{
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
在c++中,在main函数之前定义所有其他函数是一个很好的做法。
重新排列HelloWorld()
,使其出现在main()
之前:
#include <iostream>
using namespace std;
void HelloWorld()
{
cout << "Hello, World" << endl;
}
int main()
{
HelloWorld();
return 0;
}
如果你在main函数下面定义你的函数,你应该首先在上面声明它。
#include<iostream>
using namespace std;
void HelloWorld();
int main()
{
HelloWorld();
return 0;
}
void HelloWorld()
{
cout << "Hello, World" << endl;
}
在main()
方法上面声明void HelloWorld()
或添加函数原型void HelloWorld();
,以便编译器可以编译它。如果原型函数不存在,则会出现链接器错误。在这种情况下
std::cout <<hello<<endl;
std::string hello = "hello world";
相关文章:
- 未在作用域中声明unordered_map
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 未在此作用域中声明的函数和变量 (C++)
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- 重载时未在 C++ 的作用域错误中声明
- 在 C++ 中使用 "transform" 会给出一个错误,指出这未在作用域中声明
- Tictactoe 游戏变量未在作用域中声明
- 当变量在多个函数作用域中使用时,我应该在类 private 中声明该变量吗?
- 如何在C++中嵌套词法作用域可访问的作用域中声明静态信息?
- gets()未在作用域中声明
- 在C++14中,在哪个作用域中声明了重新声明枚举的非范围枚举器
- C++11 外部作用域变量声明为 auto
- 未在此作用域中声明类 (c++)
- 如何声明在函数作用域中定义的结构
- 未在此作用域中声明函数,即使存在头文件也是如此
- 变量声明中结构的作用域解析是什么意思
- 在C++中,在给定的相同作用域内声明相同的变量名
- 我可以使用相同的名称为周围作用域中的类型声明成员类型别名吗
- 类未在作用域中声明,但已声明该类
- 使用新的外部函数作用域声明和初始化变量