有人能解释一下这段代码中的编译错误吗:

#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

10-08 19:53