-3

私はしばらくこの問題をデバッグしようとしてきましたが、正直なところ、何が間違っているのかわかりません。

構文エラーがあるのはなぜですか?

#include <iostream>;
#include <time.h>;
#include <stdio.h>;
#include <stdlib.h>;
using namespace std;


class Problem3 {
    public:
        bool isPrime(long double num) {
            srand(time(NULL));
            return 0;
        }
};

私が得ているエラーは、

「関数 'srand' を解決できませんでした。」

  • 「include」ステートメントの後にセミコロンが必要ないことをよく知っています
  • Eclipse CDT と MinGW をコンパイラとして使用しています。

問題の解決方法:

これは、私が使用していた MinGW コンパイラに関係していました。Visual Studio に切り替えると、問題は解決しました。

4

3 に答える 3

4

;#includeディレクティブの最後にあるのは、コードの問題です。ディレクティブは、ステートメント#includeとは異なり、最後にセミコロンを必要としません (実際に配置するのは間違っています) 。C++

[Warning] extra tokens at end of #include directive [enabled by default] 

ディレクティブの後の任意の文字>がこのエラー/警告を引き起こすようです。

          #include<iostream>a   //error

これに変更します。

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;


class Problem3 {
    public:
        bool isPrime(long double num) {
            srand(time(NULL));
            return 0;
        }
};

int main(){
    cout<<"Hello Main";
}

編集:

リンカーの問題について:

1 つの提案はC++、型が型間で明示的にキャストされることを期待することです (以上C)。そのため、 の入力パラメータ タイプであるtime_tによって返されるtime変換にキャストを使用します。(そしてもちろん、これはリンカ エラーの問題ではないかもしれません)unsigned intsrand

を使用する代わりに、 を使用してstdlib.hみて<cstdlib>ください。名前空間を使用するためです。

それとは別に、私はこのスニペットをここで見ました。役立つ場合は、そのパターンを使用してください。

#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main() 
{
    srand(time(0)); //use current time as seed for random generator
    int random_variable = rand();
    cout << "Random value on [0 " << RAND_MAX << "]: " 
              << random_variable << '\n';
}

Eclipseメソッドが単純なプログラムC ++で解決できなかったのに役立つかどうか、SOチェックにすでに質問があります

time() を使用して srand() を初期化しないでください。.

編集:

今、多くの人がこの種の問題を抱えているようです。Eclipse CDT エラー「Function 'isdigit' could not be resolve . 彼は同じ問題に直面しています。質問者は、質問の編集でこれに対する回避策を提案しました。

その質問から引用:

これはコード分析の問題だと思います。より良い解決策は、コード分析オプションを編集して、「関数を解決できませんでした」をエラーではなく警告にすることです。そうすれば、問題ビューで警告を確認できますが、作業は続行されます。関数が本当に欠落している場合は、コンパイラが教えてくれます! また、「欠落している」関数はすべてシンボリックリンクされたインクルードファイルにあるため、シンボリックリンクをたどるコードアナライザーに問題があるという新しい理論もあります。この理論に関するご意見をお待ちしております。

それが問題を解決することを願っています。

于 2013-06-11T05:16:46.603 に答える
3

;の後にそこにいてはいけません#include

于 2013-06-11T05:16:48.540 に答える
2
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#includeファイルは次で終わらないようにしてください;

于 2013-06-11T05:16:53.960 に答える