2016-09-30 119 views
-1

为什么我从编译器中获得this error关于不带0参数的函数?是因为我在被调用之后声明函数?C++函数不接受0参数

// HelloWorld.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 


using namespace std; 

int main() 
{ 
    cout << "Hello World!\n"; 
    cout << "Game over!\n"; 
    swap(); 
    system("pause"); 
    return 0; 
} 

int swap() 
{ 
    int on = 1; 
    int off = 0; 
    int temp = on; 
    on = off; 
    off = temp; 
    return 0; 
} 

enter image description here

+2

您需要在使用它之前声明的一切。 –

+4

避免'使用namespace std'并定义一个具有相同名称的函数...... – Jarod42

+5

这是因为你被代码中'using namespace std;'行烧毁了。猜猜编译器从哪里获得'swap'? – PaulMcKenzie

回答

4

是因为我声明函数已经调用后?

是的。

当编译器看到swap()的调用时,它还不知道你的功能。在这种情况下,您通常会遇到“调用未声明的函数”的错误,如果不是(它带有两个参数),那么您已通过using namespace std指令将其拉入名称空间。

为了固定:移动的swap上述定义main(作为一个函数定义总是还函数声明)或离开它在那里一个把一个专用声明

int swap(); 

以上main 。正如你所看到的,我也摆脱了using namespace std;,因为它可能会对你造成更大的伤害,而不是最好的,而是用std::明确地加上所有标准库类型和函数的前缀。但这不是强制性的,也不是当前问题的根本原因。

1

尝试在主要上面定义的函数或只是宣布在main.It的顶部现在要求从.net库交换