我正在尝试为UDP套接字连接的select(int, fd_set, fd_set)函数设置超时。

当我设置第二个和第二个变量时,我得到错误此声明没有存储类或类型说明符

这是代码

#define UTIMER 300000
#define STIMER 0
struct timeval timeouts;
timeouts.tv_sec=STIMER;    // <-- ERROR HERE
timeouts.tv_usec=UTIMER;   // <-- ERROR HERE

最佳答案

问题是您还没有#include d定义时间值的 header 。 struct timeval timeouts本质上是原型(prototype)声明。它为编译器提供了足够的信息,以使其知道变量的存在,并允许您在指针操作中使用它,以及有关指针的类型信息(它指向struct timeval)。

但是它还不知道它的内部是什么样。

如果是Windows,则需要#include <Winsock2.h>; Linux #include <sys/time.h>

10-07 15:35