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