有人可以解释我在这个代码编译错误:
#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
访问它