有人能解释一下这段代码中的编译错误吗:
#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;
是
错误:非静态成员引用必须相对于特定对象
我错过了什么?
谢谢!
最佳答案
nodeData
是一种类型而不是一个变量-因为您typedef
它。试试看:
typedef struct nodeData_t {
int procid;
unsigned short localport;
DWORD LIFETIME;
DWORD HELLOTIMEOUT;
DWORD MAXTIME;
} nodeData;
nodeData MyNodeData;
然后使用变量
MyNodeData