Frage von ZeroclawX, 37

Warum wird folgende Fehlermeldung angegeben " C:\...\pylon.c|20|Fehler: Als Operand für unäres »&« wird L-Wert "?

void pylon_ON(int ID) {

system("cls");
pthread_t terminalThread, statusThread;
int ctrl;

// Erstelle Terminalthread
printf("CMD-> call TERMINAL . . .\n");
ctrl = pthread_create(&terminalThread, NULL, &pylon_terminal(ID, 0), NULL);
pylon_checkForError(ctrl, "FATAL ERROR!\nTERMINAL THREAD FAILED!\n");

// Erstelle Statusthread
printf("CMD-> call STATUS . . .\n");
ctrl = pthread_create(&statusThread, NULL, &pylon_status(ID, 0), NULL);
pylon_checkForError(ctrl, "FATAL ERROR!\nSTATUS THREAD FAILED!\n");

// Verbindet Threads
pthread_join(terminalThread, NULL);
pthread_join(statusThread, NULL);

}

Antwort
von Schachpapa, 16

Ein L-Wert ist eine Variable oder ein Ausdruck, der links (daher L) von =, also als Ziel einer Zuweisung stehen darf. Wahrscheinlich willst du irgendwo an eine Konstante oder an einen Wert-Ausdruck zuweisen.

Kommentar von ZeroclawX ,

Hmm...ich will eigentlich nur dass der Rückgabewert von pthread_create an die Integervariable ctrl gegeben wird um mithilfe von meiner pylon_checkForError Funktion zu kontrollieren ob der Thread erfolgreich erstellt wurde. Daher habe ich doch einen "L-Wert" (int ctrl) oder nicht? Bezieht sich der Fehler auf etwas anderes?

Kommentar von ZeroclawX ,

Hat der Fehler vielleicht etwas mit dem 2ten Parameter der pthread_create Funktion zu tun? Der zeite Parameter IST nämlich eine Konstante und braucht daher einen Wert. Aber reicht NULL nicht aus? Ich habe gelesen dass NULL im 2ten Parameter die Funktion dazu bringt einfach die Standardattribute zu verwenden.

Kommentar von Schachpapa ,

Mein C++ ist Ewigkeiten her. Ich würde mir mal

&pylon_terminal(ID, 0)

näher anschauen. pylon_terminal sieht mir eher wie ein Funktionsaufruf aus.

In diesem Code-Beispiel wird der Name einer Funktion übergeben:

http://www.ijon.de/comp/tutorials/threads/create.html

Keine passende Antwort gefunden?

Fragen Sie die Community