2017-04-08 375 views
0
#include<iostream> 
using namespace std; 
double convert(int knots) 
{ 
    double mile; 
    mile = knots * 6076/5280/60; 
    return mile; 
} 

私はC++には新しく、ノット(int)を1分あたりのマイル数(double)に変換する非常に簡単な関数を書いています。私は上記の関数を書いて、私は次のエラーを受け取りました。"collect2:エラー:ldが1の終了ステータスを返しました。" - それを修正する方法?

collect2: error: ld returned 1 exit status 

誰かが問題を解決するのに手伝ってもらえますか?

+1

どのようにコンパイルしますか?コンパイルコマンドとは何ですか?実行可能ファイルをビルドしようとしていますか? –

+0

その行の前に出力がありませんでしたか? – aschepler

答えて

1

おそらく、その行の前に他のエラーメッセージがあります:あなたはmain関数を宣言する必要がC++で実行可能なプログラムを構築するために

undefined reference to `main'

を。

それは、このしようと、あなたのプログラムへのメインエントリポイントです:

#include<iostream> 
using namespace std; 
double convert(int knots) 
{ 
    double mile; 
    mile = double(knots) * 6076/5280/60; 
    return mile; 
} 


int main(void) { 

    double miles = convert(10); //use convert function 
    cout << "Miles: " << miles << endl; //print result 
    return 0; 
} 

:あなたは明示的にそのoperator/バージョンを使用するためにはdoubleにキャストされるようにその少なくとも1つの値で必要に。 Why can't I return a double from two ints being divided
を参照してください。連想規則を覚えておいてください。式は左から右に解決されるため、複数の除算/乗算式の最初の(または第2)オペランドを明示的にキャストするだけで済みます。

+0

* "C++でコンパイルするには、main関数を宣言する必要があります。" * NO!任意のC++ソースファイルをコンパイルできます。 'main'ではC++コードをコンパイルする必要はありません。 –

+0

@AlexLop。あなたはタリータリーのリグで、編集されています! – Rama

関連する問題