這個程序是寫在我們的書,我們被告知用C和C++編譯它,儘管它不適用於這兩個。下面的錯誤是當我試圖以.cpp格式編譯它我想在C++中運行這個程序,但我不斷收到這兩個錯誤:LNK2019和LNK1120
第一個錯誤:LNK2019:無法解析的外部符號「long __cdecl oddnumber(short)」(?oddnumber @@ YAJF @ Z)在函數中引用「int __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);
}
}
可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what- is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) – Andrey