我正在尝试为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>