Bonjour à tous,
Je souhaiterais exécuter sous linux un programme en C écrit par un pote sous windows. Ce programme fonctionne parfaitement sous windows.
J'ai un souci avec la macro PTHREAD_MUTEX_INITIALIZER : le compilateur met qu'une expression est attendu avant un {, mais il n'y a pas de { dans le code à ces lignes...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
bool sds_initialize(u16 local_port, u16 switch_port, const char *switch_name, u16 *_signals, u16 _nb_signals, u16 **_signals_ranges, u16 _nb_signals_ranges) {
	watchdog_monitoring = true;
	multithreaded_signal_processing = true;
	signal_callback_function = do_nothing;
	*restart_command = '\0';
	restart_command_mutex = PTHREAD_MUTEX_INITIALIZER;    //ligne 116
	last_switch_signal_mutex = PTHREAD_MUTEX_INITIALIZER;   //ligne 117
	is_disposed_mutex = PTHREAD_MUTEX_INITIALIZER;            //ligne 118
	__is_disposed = false;
	nb_signals = _nb_signals;
	signals = _signals;
	nb_signals_ranges = _nb_signals_ranges;
	signals_ranges = _signals_ranges;
	last_switch_signal.tv_sec = 0;
	last_switch_signal.tv_usec = 0;
 
	Entity server;
 
	if (4 + 2 * nb_signals + 4 * nb_signals_ranges > SIGNAL_DATA_MAX_SIZE) return true;
 
	if (initialize_enregistrement_signal()) return true;
 
	if (entity_initialize(&server, switch_port, switch_name)) return true;
 
	if (signal_initialise_client(local_port, server)) return true;
 
	return false;
}
le retour de gcc :
sds_process.c: In function ‘sds_initialize’:
sds_process.c:116: error: expected expression before ‘{’ token
sds_process.c:117: error: expected expression before ‘{’ token
sds_process.c:118: error: expected expression before ‘{’ token
Merci d'avance pour votre aide.


Autre question pendant qu'on y est : un warning apparait disant que usleep est déclaré implicitement alors que la bibliothèque unistd.h est bien inclue, est-ce que vous voyez ce qui se passe ?