wahrscheinlich ist es ganz einfach, wenn man weiß wie:
Ich möchte einen Mutex file übergreifend verwenden:
Wenn ich ihn im main.h drin habe, werden im main.c
usleep was not declared
displayStatus was not declared
und dergleichen mehr Fehler ausgegeben.
Wenn ich ihn aus main.h entferne, ist er klarerweise im communication.c nicht mehr verfügbar.
Wie muss der mutex korrekt deklariert / definiert werden?
Danke,
Mandy
main.c
Code: Alles auswählen
#include "main.h"
#include "communication.h"
#include "display.h"
extern pthread_mutex_t mutex;
void refreshDisplay(struct DisplayStatus *status);
int main(int argc, char **argv)
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>
#ifndef _MAIN_H_
#define _MAIN_H_
#define STATUS_ZEIT 0
#define STATUS_LIED 1
#define STATUS_COUNTUP 2
#define STATUS_COUNTDOWN 3
#define COUNTER_OFF -999999
extern pthread_mutex_t mutex;
struct DisplayStatus
{
int status;
long int value;
long int counter;
time_t zeit;
bool timerUeberlauf;
};
#endif
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <errno.h>
#include <sys/param.h>
#include <pthread.h>
#include "communication.h"
#include "main.h"
struct DisplayStatus *displayStatus;
struct sockaddr_in remoteAddr;
void KommandoHallo(char *datagram);
void KommandoLied(char *datagram);
void KommandoCounterStop(char *datagram);
void KommandoCounter(char *datagram, int richtung);
void SendeAntwort(char *datagram);
extern void *WarteAufKommando(void* val)
{