我正在尝试为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
答案 0 :(得分:3)
问题是你没有#include
d定义timeval的标头。 struct timeval timeouts
本质上是一个原型声明。它为编译器提供了足够的信息,使其知道存在的变量,并允许您在指针操作中使用它,并提供有关指针的类型信息(指向struct timeval
)。
但它还不知道它的内部是什么样的。
如果是Windows,则需要#include <Winsock2.h>
; Linux #include <sys/time.h>