windows - global struct og flere tråde i c

Indlæg af Hanne Mølgaard Plasc

Problem



kan nogen forklare mig kompileringsfejlen i denne kode:


#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  

}


Jeg vil have nodeData struct til rådighed for alle lyttere. Tråd jeg vil oprette. tråde vil manipulere denne nodeData struktur hele tiden (vil beskytte den med en mutex).


så jeg vil have denne struktur til rådighed globalt. hvor initialiserer jeg det? mit gæt er i hovedet.


kompileringsfejlen i linjen


nodeData.localport = 5001;


er



  Fejl: En ikke-statisk medlemsreference skal være i forhold til en bestemt objekt



hvad mangler jeg her?


tak!

Bedste reference


nodeData er en type ikke en variabel - siden du typedef den. Prøv f.eks .:


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

nodeData MyNodeData;


Og brug derefter variablen MyNodeData

Andre referencer 1


Uden at gå ind i hvorfor du ikke bør bruge en global til dette, har du ikke skabt en global variabel overalt, kun defineret en struktur og typedef det.


Forud for det vigtigste skal du gøre:


nodeData myNodeData;


Og få adgang til det som myNodeData