全局结构和c中的多个线程

有人可以解释我在这个代码编译错误:

#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结构可用于每个我将创build的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

不用为什么你不应该为此使用一个全局变量,你还没有在任何地方创建一个全局变量,只定义了一个结构和类型定义了它。

之前主要你需要做的:

 nodeData myNodeData; 

并作为myNodeData访问它