C ++中的函数安排

时间:2015-08-28 16:40:52

标签: c# c++ visual-studio function visual-c++

我刚刚开始使用C ++,我在安排这些功能时遇到了一些问题。

当我使用Unity(C#)时,我曾经先写过Start函数,然后根据调用它们的时间编写其他函数。

但是在这里,在C ++中,看起来反之亦然!

例如,我在LearnCPP.com上学习时写了这个简单的程序

#include <iostream>


void Add(int No1, int No2)
{
    std::cout << No1 + No2 << std::endl;
}

void Subtract(int No1, int No2)
{
    std::cout << No1 - No2 << std::endl;
}

void GetNumbers(int Operation)
{
    int No1;
    int No2;

    std::cout << "The first no. : ";
    std::cin >> No1;
    std::cout << "The second no. : ";
    std::cin >> No2;

    if (Operation == 1)
    {
        Add(No1, No2);
    }
    else if (Operation == 2)
    {
        Subtract(No1, No2);
    }
}

int main ()
{
    while (true)
    {
        int Operation;
        int TryAgain;

        std::cout << "Enter 1 for an Addition Operation. Enter 2 for a Subtraction Operation." << std::endl;
        std::cin >> Operation;

        GetNumbers(Operation);

        std::cout << "Enter 1 to try again. Enter 2 to exit.";
        std::cin >> TryAgain;

        if (TryAgain == 1)
        {

        }
        else if (TryAgain == 2)
        {
            break;
        }
    }

    return 0;
}

如果我要用C#编写它,我首先会编写main(Start)函数,然后是GetNumbers,然后是Add和Subtract函数。

如果我用这种方式用C ++编写,我会收到错误(我使用的是Visual Studio 2013社区版)。

我有什么方法可以做到吗?

先谢谢

5 个答案:

答案 0 :(得分:1)

必须在使用之前声明函数,但您可以稍后定义它们:

int add (int a, int b);

int main () {
    return add(1,2);
}

int add (int a, int b) {
    return a + b;
}

答案 1 :(得分:1)

这是因为C ++需要一个函数头来知道函数在被调用之前使用了什么参数,所以你要么在main之前调用它们,要么声明函数原型,如下所示:

#include <iostream>


//function prototypes
void Add(int No1, int No2);
void Subtract(int No1, int No2);
void GetNumbers(int Operation);

int main ()
{
    while (true)
    {
        int Operation;
        int TryAgain;

        std::cout << "Enter 1 for an Addition Operation. Enter 2 for a Subtraction Operation." << std::endl;
        std::cin >> Operation;

        GetNumbers(Operation);

        std::cout << "Enter 1 to try again. Enter 2 to exit.";
        std::cin >> TryAgain;

        if (TryAgain == 1)
        {

        }
        else if (TryAgain == 2)
        {
            break;
        }
    }

    return 0;
}

void Add(int No1, int No2)
{
    std::cout << No1 + No2 << std::endl;
}

void Subtract(int No1, int No2)
{
    std::cout << No1 - No2 << std::endl;
}

void GetNumbers(int Operation)
{
    int No1;
    int No2;

    std::cout << "The first no. : ";
    std::cin >> No1;
    std::cout << "The second no. : ";
    std::cin >> No2;

    if (Operation == 1)
    {
        Add(No1, No2);
    }
    else if (Operation == 2)
    {
        Subtract(No1, No2);
    }
}

答案 2 :(得分:0)

您至少应该向前声明函数,并且可能使用包含前向声明的.hpp文件。

答案 3 :(得分:0)

在C ++中,我们主要使用范围,即只要变量或函数未被声明为extern或先前声明(标题等),编译器无法分辨。

答案 4 :(得分:0)

在这种特殊情况下,如果你比较苹果和苹果,C ++就像C#一样工作。类似于C#示例将包含一个类,其中包含一些您可以按任何顺序定义和调用的成员:

class CMyClass
{
    void Start()
    {
        GetNumbers(1);
    }
    void GetNumbers(int Operation) 
    {
        Add(2, 3);
        Subtract(4, 5);
    }
    void Add(int No1, int No2) {}
    void Subtract(int No1, int No2) {}
};