2013-11-03 101 views
0

我试图为UDP套接字连接设置select(int, fd_set, fd_set)函数的超时。C++错误此声明没有存储类或类型说明符

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

下面的代码

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

#define是一个预处理指令,';'在这些行的结尾是不正确的.. – kfsone

+0

把他们拿出来。仍然得到错误 – jsan

回答

3

的问题是,你还没有#include d定义的timeval头。 struct timeval timeouts本质上是一个原型声明。它为编译器提供了足够的信息,以便知道该变量是否存在,并允许您在指针操作中使用该指针,并提供指针的类型信息(指向struct timeval)。

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

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