C 使用timeval结构和gettimeofday—;因为#define中的分号

C 使用timeval结构和gettimeofday—;因为#define中的分号,c,gettimeofday,timeval,C,Gettimeofday,Timeval,我遇到了几个奇怪的编译错误。这是一个家庭作业(帮助是可以的)。其想法是实现一个程序,测试用户每秒按一次“回车”键的能力。我应该使用gettimeofday为每个“回车”获取一些时间值,然后找出平均时间和标准偏差。。。我试图通过检查stdin中的“\n”来实现这一点,如果为true,则使用gettimeofday填充timeval结构,然后将所述结构存储在数组中以供以后使用 我在编译(gcc-Wextra homework1.c)时遇到的错误有: 我不明白为什么我会出现前两个语法错误,然后我也不明

我遇到了几个奇怪的编译错误。这是一个家庭作业(帮助是可以的)。其想法是实现一个程序,测试用户每秒按一次“回车”键的能力。我应该使用gettimeofday为每个“回车”获取一些时间值,然后找出平均时间和标准偏差。。。我试图通过检查stdin中的“\n”来实现这一点,如果为true,则使用gettimeofday填充timeval结构,然后将所述结构存储在数组中以供以后使用

我在编译(
gcc-Wextra homework1.c
)时遇到的错误有:

我不明白为什么我会出现前两个语法错误,然后我也不明白为什么在“main”的开头明确声明“entry\u 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;
}
GNU nano 2.2.6文件:homework1.c //原型 int GetAverage(长数组[]); int GetStdDev(长数组[]); //#用户跟踪的击键次数 #定义最大冲程1; int main(int argv,字符**argc){ struct timeval entry_数组[MAX_STROKES];//来自timeval struct的tv_usec字段的容器 双平均=0; 双标准偏差=0; 整数计数=0; printf(“此程序将测试您每1秒按enter键的能力,持续10秒。准备好了吗?”$ //循环以构建timeval的数组 同时(计数<最大冲程){ 结构时间值时间值; int input=getc(标准输入); 如果(输入=='\n'){ gettimeofday(&time_val,NULL); 条目\数组[计数]=时间\值; ++计数; } } 返回0; }
问题在于
最大笔划
宏。因为这是作业,我不会告诉你到底是什么问题。

问题在于
最大笔划
宏。因为这是作业,我不会告诉你到底是什么问题

  • 这:
    \define MAX_STROKES 1;
    在使用“MAX_STROKES”(找出“为什么”是您的工作)的任何地方都可能成为语法错误

  • 我希望您已将此注释掉:
    GNU nano 2.2.6文件:homework1.c

  • 我不确定您的“printf()”是否正常:在剪切/粘贴中,它在此处被剪切:
    准备就绪,当您$

  • 我希望你包括了你需要的所有文件,比如“stdio.h”和“time.h”

  • 这:
    \define MAX_STROKES 1;
    在使用“MAX_STROKES”(找出“为什么”是您的工作)的任何地方都可能成为语法错误

  • 我希望您已将此注释掉:
    GNU nano 2.2.6文件:homework1.c

  • 我不确定您的“printf()”是否正常:在剪切/粘贴中,它在此处被剪切:
    准备就绪,当您$

  • 我希望你包括了你需要的所有文件,比如“stdio.h”和“time.h”


  • 我做了一点调查,认为我的MAX_STROKES宏想法不太正确。谢谢各位。我猜它不是我想要的。我在寻找“int MAX_STROKES=1”…1是默认的字符吗?我不太清楚它到底是什么。读完后,我决定使用“静态常数int MAX_笔划=1;“相反,它编译得很好。

    做了一些研究,认为我的MAX\u STROKES宏想法不太正确。谢谢各位。我猜它不是我想要的。我在寻找“int MAX\u STROKES=1”"... 默认情况下1是字符吗?我不太清楚到底是什么。阅读后,我决定使用“static const int MAX_STROKES=1;”,它编译得很好。

    +1用于指向,而不是回答,因为这是家庭作业。如果可以的话,我会加5分。因为这是家庭作业,所以我会加1分,因为我会指指点点,不回答。如果可以的话,我会加上5。是的,已经被注释掉了。该死的,你们这些家伙还坚持着!;)感谢您指出错误可能来自何处。我很快会回来的。是的,已经被评论掉了。该死的,你们这些家伙还坚持着!;)感谢您指出错误可能来自何处。我很快会回来的。问题是宏中的分号(;)。你应该把它删掉。它使编译器看到以下内容:
    struct timeval entry_array[MAX_STROKES 1;]该死,你说得对!我完全错过了那个细节,因为我正在看K&R的C编程的宏部分。。。微妙的。非常感谢你澄清这一点。这带来的一个问题是…编译器如何知道“1”是int?默认值?问题是宏中的分号(;)。你应该把它删掉。它使编译器看到以下内容:
    struct timeval entry_array[MAX_STROKES 1;]该死,你说得对!我完全错过了那个细节,因为我正在看K&R的C编程的宏部分。。。微妙的。非常感谢你澄清这一点。这带来的一个问题是…编译器如何知道“1”是int?违约
    
      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;
    }