Я изучаю C++ из C++ для математиков Эдварда Шнайнермана. Я работаю на наибольший общий делитель раздела в главе 2. Я сделал три файла:Компиляция программы на C++ с заголовками (новичок)
gcd.h
#ifndef GCD_H
#define GCD_H
long gcd(long a, long b);
#endif
gcd.cc
#include "gcd.h"
#include<iostream>
using namespace std;
long gcd(long a, long b) {
if(a == 0 && b == 0) {
cerr << "WARNING: gcd(0,0) not defined" << endl;
return 0;
}
if(a < 0) a = -a;
if(b < 0) b = -b;
if(b == 0) retrun a;
if(a == 0) return b;
long c = a % b;
return gcd(b,c);
}
и gcdtest.cc
#include "gcd.h"
#include <iostream>
using namespace std;
int main() {
long a,b;
cout << "Enter the first number > ";
cin >> a;
cout << "Enter the second number > ";
cin >> b;
long d = gcd(a,b);
cout << "The gcd of " << a << " and " << b << " is " << d << endl;
return 0;
}
Все эти файлы находятся в одном каталоге. При попытке компиляции gcdtest.cc
$ g++ -Wall gcdtest.cc -o gcdtest.exe
Я получаю следующее сообщение об ошибке:
$ g++ -Wall gcdtest.cc -o gcdtest.exe
Undefined symbols for architecture x86_64:
"gcd(long, long)", referenced from:
_main in ccgbCyQO.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Я являюсь новеньким C++ и Havent полностью grokked компиляции и компоновки. Что я делаю не так?
Вы не компилируется файл gcd.cc, поэтому связь не удается при поиске НОД function – SomeWittyUsername
Кроме того, у вас есть опечатка в 'gcd.cc'. 'retrun! = return' – MikeTheLiar