Semafory - Błąd Kompilacji

0

Podczas kompilacji, dostaje błąd o tresci: "storage size of ".." isn't know.

Część nagłówkowa

#ifdef _SEM_SEMUM_UNDEFINED
 union semun {
	
	  int val;
	  struct semid_ds *buf ;
	  unsigned short  *array ;
	  struct seminfo *__buf;
	};
#endif

// Tworzenie lub Uzyskiwanie dostepu do semafora. Tworzy również klucz dla semafora 
int semDecl( int );

// Inicjalizuje semafor wartoscia val
void SemInit ( int , int );

Tutaj gdzieś jest błąd, obiekt semarg jest typu union semun , wiec dlaczego kompilator zwraca błąd ???

void SemInit( int semid , int value ) 
{
union semun semarg; // tworzenie ustaw 
semarg.val = value ; // Ustawiamy wartosci val na 1 w uni semum o nazwie ustaw
	if( (semctl (semid , 0 , SETVAL , semarg )) == -1 )
	   {
	     perror("Błąd funkcji semctl");
	      exit(3);
	   }

}

0

Nagłówki masz wszystkie, które należy?

0

Czy masz na pewno przed deklaracją typu semum masz w kodzie #define _SEM_SEMUM_UNDEFINED?
Według tej logiki po deklaracji powinieneś zrobić #undef _SEM_SEMUM_UNDEFINED.
Chociaż zazwyczaj robi się odwrotnie (np. SEM_SEMUM_DEFINED).

1 użytkowników online, w tym zalogowanych: 0, gości: 1