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

Mic*_*ael 1 c windows struct global

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

#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  

}
Run Code Online (Sandbox Code Playgroud)

我希望nodeData结构可用于我将创建的每个listenerThread.线程将一直操纵此nodeData结构(将使用互斥锁保护它).

所以我希望这个结构在全球范围内可用.我在哪里初始化它?我猜是主要的.

行中的编译错误

nodeData.localport = 5001;
Run Code Online (Sandbox Code Playgroud)

错误:非静态成员引用必须与特定对象相关

我在这里失踪了什么?

谢谢 !

Eri*_*rik 6

nodeData是一种类型而不是变量 - 因为你typedef.尝试例如:

typedef struct nodeData_t {
    int procid;
    unsigned short localport;
    DWORD LIFETIME;
    DWORD HELLOTIMEOUT;
    DWORD MAXTIME;
} nodeData;

nodeData MyNodeData;
Run Code Online (Sandbox Code Playgroud)

然后使用变量 MyNodeData