c ++函数不带0个参数

时间:2016-09-30 21:30:46

标签: c++

为什么我从编译器获得this error关于不带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 个答案:

答案 0 :(得分:4)

  

是因为我在调用函数之后声明了这个函数吗?

当编译器看到swap()的调用时,它还不知道你的函数。在这种情况下,你通常会遇到“调用未声明函数”的错误,如果不是std::swap(它有两个参数),你已经被{{拉入了你的名字空间1}}指令。

为了解决问题:将using namespace std 的定义移到 swap之上(因为函数定义也始终是函数声明)或将其保留在放置的位置专门的声明

main

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

答案 1 :(得分:1)

尝试在main之上定义你的函数或者在main之上声明。它现在从.net库调用swap