Visual c++ 我正在尝试用c++;但我一直有两个错误:LNK2019和LNK1120 这个程序是在我们的书中写的,我们被告知要用C和C++编译它,虽然它不能同时适用于这两个程序。下面的错误是我试图以.cpp格式编译它时出现的

Visual c++ 我正在尝试用c++;但我一直有两个错误:LNK2019和LNK1120 这个程序是在我们的书中写的,我们被告知要用C和C++编译它,虽然它不能同时适用于这两个程序。下面的错误是我试图以.cpp格式编译它时出现的,visual-c++,Visual C++,第一个错误:LNK2019:未解析的外部符号“长cdecl ODDNAME(短)”(?ODDNAME@@YAJF@Z)在函数“int u cdecl evennumber(int)”中引用(?evennumber@@YAHH@Z) 第二个错误:LNK1120:1个未解析的外部 // This program shows function and variable declarations and their scopes. #define _CRT_SECURE_NO_WARNINGS #inc

第一个错误:LNK2019:未解析的外部符号“长cdecl ODDNAME(短)”(?ODDNAME@@YAJF@Z)在函数“int u cdecl evennumber(int)”中引用(?evennumber@@YAHH@Z) 第二个错误:LNK1120:1个未解析的外部

// This program shows function and variable declarations and their scopes.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//#include<iostream.h>
int keven = 0, kodd = 0;
long evennumber(short);
long oddnumber(short);
int even(int);
int evennumber(int a) {
    // genuine declaration
    if (a == 2) {
        printf("keven = %d, kodd = %d\n", keven, kodd);
        return keven;
    }
    else {
        a = (int) a / 2;
        if (even(a)) {
            // Is a even?
            keven++;
            return evennumber(a);
        }
        else {
            kodd++;
            return oddnumber(a);
        }
    }
    // return a;
}
int oddnumber(int b) {
    // genuine declaration
    if (b == 1) {
        printf("keven = %d, kodd = %d\n", keven, kodd);
        return kodd;
    }
    else {
        b = 3 * b + 1;
        if (!even(b)){
            //Isbodd?
            kodd++;
            return oddnumber(b);
        }
        else {
            keven++;
            return evennumber(b);
        }
    }
    // return b;
}
int even(int x) {
    // % is modulo operator.
    return ((x % 2 == 0) ? 1 : 0);
}
void main() {
    register short r = 0;   // a register type variable is faster,
    int i = r;  // it is often used for loop variable
    float f;
    for (r = 0; r < 3; r++) {
        printf("Please enter an integer number that is >= 2\n");
        scanf("%d", &i);

        if (even(i))
            f = evennumber(i);
        else
            f = oddnumber(i);
    }
}
//此程序显示函数和变量声明及其作用域。
#定义\u CRT\u安全\u无\u警告
#包括
//#包括
int-keven=0,kodd=0;
长偶数(短);
长号码(短号码);
整数偶数(int);
整数(整数a){
//真实声明
如果(a==2){
printf(“keven=%d,kodd=%d\n”,keven,kodd);
返回基文;
}
否则{
a=(int)a/2;
如果(偶数(a)){
//a是偶数吗?
keven++;
返回编号(a);
}
否则{
kodd++;
返回号码(a);
}
}
//返回a;
}
整数编号(整数b){
//真实声明
如果(b==1){
printf(“keven=%d,kodd=%d\n”,keven,kodd);
返回kodd;
}
否则{
b=3*b+1;
如果(!偶数(b)){
//是伯德吗?
kodd++;
返回号码(b);
}
否则{
keven++;
返回编号(b);
}
}
//返回b;
}
整数偶数(整数x){
//%是模运算符。
返回((x%2==0)?1:0;
}
void main(){
寄存器短r=0;//寄存器类型变量更快,
int i=r;//它通常用于循环变量
浮动f;
对于(r=0;r<3;r++){
printf(“请输入一个大于等于2的整数\n”);
scanf(“%d”、&i);
如果(偶数(i))
f=偶数(i);
其他的
f=奇数(i);
}
}

链接器表示您声明了一个符号
长偶数(short),但找不到定义。首先检查函数的签名:声明和定义必须匹配!例如,我认为您想要声明
intoddnumber(int)


如果您使用相同的名称定义多个函数,但签名不同,请小心。这在C++中是允许的,但是在C.</P>中可能是@ USER 208210的副本:接受一个答案比感谢注释快得多。