gettimeofday()未在此范围内声明 - Cygwin

时间:2016-04-27 22:08:25

标签: c++ compilation cygwin

cygwin可以使用gettimeofday()吗?我收到了错误:

lab8.cpp: In function ‘int main()’:
lab8.cpp:62:30: error: ‘gettimeofday’ was not declared in this scope
     gettimeofday(&start, NULL);
                              ^
makefile:14: recipe for target 'lab8.o' failed
make: *** [lab8.o] Error 1

我绝对包括<sys/time.h>。是否有我必须安装的软件包,或者它是否在Windows上无法运行?

编辑:这是一个产生相同错误的简单测试:

#include <sys/time.h>

int main() {
    struct timeval start;

    gettimeofday(&start, NULL);
}

错误:

$ g++ -c -Wall -g -std=c++11 test.cpp -o test.o
test.cpp: In function ‘int main()’:
test.cpp:6:30: error: ‘gettimeofday’ was not declared in this scope
     gettimeofday(&start, NULL);

2 个答案:

答案 0 :(得分:7)

您需要定义_BSD_SOURCE以包含声明gettimeofday(因为glibc2.2.2根据下面的链接)

#define _BSD_SOURCE

#include <sys/time.h>

int main() {
    struct timeval start;

    gettimeofday(&start, NULL);
}

gettimeofday() - Unix, Linux System Call

答案 1 :(得分:0)

谢谢约翰 - 你的问题解答我的答案!

如果它可以帮助其他人搜索此错误... 我得到了同样的错误:

error: ‘gettimeofday’ was not declared in this scope
  gettimeofday(&lastBigTick, NULL);

当我从Debian 8(jessie)迁移到Debian 9(延伸)在树莓派上时,这个错误开始发生

对我来说,我没有#included&#34; sys / time.h&#34;我只有#included&#34; time.h&#34; 不确定它之前是如何编译的,但确实如此,所以添加

#include "sys/time.h"

为我做了这份工作。

注意:&#34; time.h&#34;是不同的,其他时间功能仍然需要,所以我最终需要两个:

#include "time.h"
#include "sys/time.h"

我的情况可能有所不同,如添加

#define _BSD_SOURCE

对我的情况没有任何影响 - 这对我来说不是问题。