1

奇妙なコンパイルエラーがいくつか発生します。これは宿題用です(ヘルプは大丈夫です)。アイデアは、ユーザーが1秒に1回「Enter」を押すことができるかどうかをテストするプログラムを実装することです。gettimeofdayを使用して、各「入力」の時間値を取得し、平均時間と標準偏差を確認することになっています...stdinで「\n」をチェックしてからtrue、gettimeofdayを使用してtimeval構造体にデータを入力し、後で使用するためにその構造体を配列に格納します...

コンパイル時に発生するエラー(gcc -Wextra homework1.c)は次のとおりです。

homework1.c: In function ‘main’:
homework1.c:19:29: error: expected ‘]’ before ‘;’ token
homework1.c:27:17: error: expected ‘)’ before ‘;’ token
homework1.c:32:4: error: ‘entry_array’ undeclared (first use in this function)
homework1.c:32:4: note: each undeclared identifier is reported only once for each function it appears in

最初の2つの構文エラーが発生する理由がわかりません。また、「main」の先頭で「entry_array」を明確に宣言しているのに、なぜ「entry_array」が宣言されていないのか理解できません。提案?

timeval構造体の使い方がわからないのでやけどをしているような気がします...最初は他の構造体と同じように構造体timevalをグローバルに定義しようとしましたが、structtimevalの定義を上書きするときにエラーが発生しました。 。これは、「sys / time.h」ライブラリで定義されているためですか?

コードは次のとおりです。

  GNU nano 2.2.6                        File: homework1.c                                                       
//prototypes 
int GetAverage(long array[]);
int GetStdDev(long array[]);

//# of keystrokes tracked by user
#define MAX_STROKES 1;



int main(int argv, char ** argc) {
        struct timeval entry_array[MAX_STROKES]; //container for tv_usec fields from timeval struct
        double average = 0; 
        double std_deviation = 0;
        int count = 0; 

        printf("This program will test your ability to hit enter every 1 second, for 10 seconds.  Ready when yo$

        //loop to build array of timeval's
        while (count < MAX_STROKES) {
                struct timeval time_val;
                int input = getc(stdin);
                if (input == '\n') {
                        gettimeofday(&time_val, NULL);
                        entry_array[count] = time_val;
                        ++count;
                }
        }
        return 0;
}
4

3 に答える 3

5

問題はMAX_STROKESマクロです。これは宿題なので、何が問題なのかは正確には言いません。

于 2012-04-16T15:59:20.923 に答える
1
  1. これ #define MAX_STROKES 1;は、「MAX_STROKES」を使用する場所で構文エラーになる可能性があります(「理由」を理解するのはあなたの仕事です;))。

  2. これがコメントアウトされていることを願っています:GNU nano 2.2.6 File: homework1.c

  3. あなたの「printf()」が大丈夫かどうかわかりません: カット/ペーストでは、ここで切り取られています:Ready when yo$

  4. 「stdio.h」や「time.h」など、必要なすべてのファイルを #include していることを願っています

于 2012-04-16T16:02:01.547 に答える
1

少し調べてみたところ、私が持っていた MAX_STROKES マクロのアイデアは正しくないことがわかりました。みんなありがとう。私の推測では、それは私が望んでいたものではなかったということです。「int MAX_STROKES = 1」を探していたのですが… 1 はデフォルトで char でしたか? それが何だったのか、はっきりとは言えません。読んだ後、「static const int MAX_STROKES = 1;」を使用することにしました。代わりに、正常にコンパイルされました。

于 2012-04-16T16:18:35.777 に答える