有人可以解释一下这段代码中的编译错误:
#include "common.h"
typedef struct nodeData {
int procid;
unsigned short localport;
DWORD LIFETIME;
DWORD HELLOTIMEOUT;
DWORD MAXTIME;
} nodeData;
int listenerThread() {
if(!bindSocket(listenSocket,nodeData.localport)){
closesocket(listenSocket);
WSACleanup();
exit(-1);
}
// more code goes here
}
int main(int argc,char* argv[]) {
nodeData.localport = 5001;
// more code goes here
}
我希望nodeData结构可用于我将创建的每个listenerThread。线程将一直操纵这个nodeData结构(用互斥锁保护它)。
所以我希望这个结构可以全局使用。我在哪里初始化它?我猜是主要的。
行
中的编译错误nodeData.localport = 5001;
是
错误:非静态成员引用必须相对于特定对象
我在这里缺少什么?
谢谢!
答案 0 :(得分:6)
nodeData
类型不是变量 - 因为您typedef
。试试,例如:
typedef struct nodeData_t {
int procid;
unsigned short localport;
DWORD LIFETIME;
DWORD HELLOTIMEOUT;
DWORD MAXTIME;
} nodeData;
nodeData MyNodeData;
然后使用变量 MyNodeData
答案 1 :(得分:1)
为什么你不应该为此使用全局变量,你没有在任何地方创建一个全局变量,只定义了一个结构并为它定义了它。
在主要之前你需要做:
nodeData myNodeData;
并将其作为myNodeData