我是C++的初學者,我正在編寫一個程序來尋找最大的公因子。在主,我有:C++無法編譯文件
#include <iostream>
#include <cstdlib>
#include "longgcd.cpp"
int main(int argc, char* argv[]){
long gcd(long m, long n);
long m,n,g;
m=atol(argv[1]);
n=atol(argv[2]);
g=gcd(m,n);
std::cout<<"gcd("<<m<<","<<n<<")="<<g<<std::endl;
return 0;
}
,然後我把子函數到名爲longgcd.cpp
#include <iostream>
#include <cstdlib>
long gcd(long m, long n){
long r;
while(n !=0){
r=m%n;
m=n;
n=r;
}
return m;
}
莫名其妙longgcd.cpp不能編譯另一個文件。我得到一個錯誤:
/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [longgcd] Error 1
不知何故,我有困難,運行此程序並利用這個機會,我看不出什麼毛病。感謝您的任何幫助或建議。
你有沒有試過把兩個函數放在同一個文件中並編譯它? – sarsnake
有幾點讓你的代碼更好(除了評論中提到的實際showstoppers):1)在訪問參數之前,你可能要考慮測試'argv'實際上是否至少是'3'。 2)通常在C++中,在初始化的時候聲明變量是一種很好的做法,而不是在函數的開頭。這會使代碼更加緊張,甚至可以提高性能。 – Grizzly