2017-01-30 4 views
1

Zuerst lerne ich noch C++, weil ich ein Programm ändern muss, um einige Funktionen hinzuzufügen. In diesem Programm habe ich eine globale Statusvariable, die eine Struktur ist. Das ist die Idee/code:Variable als Struktur im globalen Gültigkeitsbereich - wie definieren?

struct { 
    int counter; 
    int x; 
    int y; 
} MyStruct; 

Dies ist definiert in ‚.h‘ des Hauptprogramms und dieser ‚Variable‘ (MyStruct) in einer Menge von Funktionen genannt staatliche und andere Informationen zu erhalten. Das Problem ist, dass ich diese Informationen an einen Thread senden muss. Ich versuche, einen Thread zu erstellen (mit pthread_create) und übergeben Sie diese "Variable" als Zeiger auf pthread_create Funktion. Das funktioniert gut. Das Problem ist, wenn ich versuche, auf eine Eigenschaft dieser Struktur in meiner Thread-Funktion zuzugreifen. Ich kann meine lokale Variable nicht auf diese Struktur schreiben, da diese Struktur keinen Definitionsnamen hat! Ist es möglich auf eine Eigenschaft ohne Strukturnamen zuzugreifen? Ich versuche wirklich zu vermeiden, diese Struktur zu ändern (sogar einen Namen dafür hinzuzufügen).

Meine Pthread erstellen (funktioniert):

pthread_create(&proc_local_table_thread, NULL, procLocal, &MyStruct); 

Und mein Thread-Funktion (nicht funktioniert):

void *procLocal(void *arg) { 
    int *a = arg.x; 
    // This doesn't work too 
    //int *a = (struct Modes)arg.x; 
    // Code... 
} 
+4

C oder C++? Sie sind nicht gleich, besonders wenn es um "void" -Zeiger geht. –

+4

[Funktioniert nicht] (http://importblogkit.com/2015/07/does-not-work/) ist keine gute Problembeschreibung. –

+1

Keine Spam-Tags! – Olaf

Antwort

Verwandte Themen