1

我收到了一些奇怪的编译错误。这是一个家庭作业(帮助是好的)。这个想法是实现一个程序来测试用户每秒点击一次“输入”的能力。我应该使用 gettimeofday 来获取每个“输入”的一些时间值,然后找出平均时间和标准偏差......我试图通过检查标准输入的 '\n' 来做到这一点,然后如果是的,使用 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

我不明白为什么会出现前两个语法错误,然后我不明白为什么在“main”开头明确声明“entry_array”时未声明它。建议?

我觉得我因为不知道如何使用 timeval 结构而被烧毁......最初我尝试像使用任何其他结构一样全局定义 struct timeval,但是在覆盖 struct timeval 的定义时遇到错误。 .这是因为它是在“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. 我希望你#includ'ing所有你需要的文件,比如“stdio.h”和“time.h”

于 2012-04-16T16:02:01.547 回答
1

做了一些研究,并确定我的 MAX_STROKES 宏想法不太正确。多谢你们。我的猜测是它不代表我想要的。我正在寻找“int MAX_STROKES = 1”...默认情况下1是一个字符吗?我不太清楚它到底是什么。阅读后我决定使用“static const int MAX_STROKES = 1;” 相反,它编译得很好。

于 2012-04-16T16:18:35.777 回答