错误LNK2019:未解析的符号“char_cdecl st(void)

时间:2013-05-19 04:12:13

标签: c++ lnk2019

好的,所以我环顾四周,我仍然不太明白为什么我会收到这个错误。我的代码包含在下面。我有一些旧的代码工作得很好。然后我决定这样做,这样你就可以在每次打开应用程序时执行多次计算。在修复了其他几个错误之后,这个错误就出现了。在我意识到我需要'围绕y'之后,这个突然出现了。

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

using namespace std;
int main(int nNumberofArgs, char* pszArgs[])

{

    int x;
    int y;
    int result;
    char z;
    char a = 'y';

    char st();
    {
        cout << ("Do another calculation?: y/n");
        cin >> a;
        if (a = 'n')
        {
            system("PAUSE");
            return 0;
        }
    }


    while (a = 'y');
    {
        cout << "Symbol here: " <<endl;
        cin >> z;
        cout << "Number 1: " <<endl;
        cin >> y;
        cout << "Number 2: " <<endl;
        cin >> x;
        if (z == '*')
        {
            result = x * y;
            cout << "Answer:" << result <<endl;
            st();
        }
        else if (z == '/')
        {
            result = x * y;
            cout << "Answer:" << result <<endl;
            st();
        }
        else if (z == '-')
        {
            result = x / y;
            cout << "Answer:" << result <<endl;
            st();
        }
        else if (z == '+')
        {
            result = x + y;
            cout << "Answer:" << result <<endl;
            st();
        }
        else if (z == '%')
        {
            result = y % x;
            cout << "Answer:" << result <<endl;
            st();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

char st()末尾有一个分号。这声明了函数但没有定义它。声明后的代码成为main的一部分,并在您第一次启动时执行。这就是为什么你可能没有注意到它。

您需要将st()移出main,因为本地函数定义在C ++中是非法的。

using namespace std;

char st()
{
    cout << ("Do another calculation?: y/n");
    cin >> a;
    if (a = 'n')
    {
        system("PAUSE");
        return 0;
    }
}


int main(int nNumberofArgs, char* pszArgs[])
{
    int x;
    int y;

    // ... rest of your code

    return 0;
}