PDA

View Full Version : [C] direttive per il precompilatore


nico88desmo
02-01-2007, 19:57
Un saluto a tutti!

dovrei fare un programmino che se siamo in ambiente Windows includa una libreria e se siamo in ambiente linux un'altra;
si può fare?

avevo in mente di fare una cosa di questo tipo:


#ifndef SISTEMA
#define SISTEMA 1
#endif

// Scelgo la funzione di sistema per pulire lo schermo
#if SISTEMA==0
#include <mylib.h>
#elif SISTEMA==1
#include <conio.h>
#endif


(SISTEMA lo ho messo per far capire quello che vorrei fare)

grazie!

vizzz
02-01-2007, 20:15
con gcc l'opzione -DFLAG=1 definisce FLAG = 1

andbin
02-01-2007, 20:18
Innanzitutto in questi casi si parla di preprocessore, non precompilatore.

Fare quello che dici è anche più semplice di quanto hai scritto. Tutti i compilatori hanno delle macro predefinite relative alla piattaforma e altre cose.

Quindi si può fare:
#if defined(WIN32)
...qui metti roba per Windows...
#elif defined(linux)
...qui metti roba per Linux...
#endif

nico88desmo
02-01-2007, 20:35
così semplice...non credevo! :eek:
Grazie mille! :cool:

andbin
03-01-2007, 09:03
Tra l'altro, se può servire, segnalo una piccola "chicca" molto interessante, una funzionalità del compilatore 'gcc' che forse pochi conoscono.

Con il gcc (sia su Linux, sia con il suo porting su Windows) è possibile avere l'elenco delle macro predefinite dal compilatore eseguendo dal prompt il seguente comando:

echo | gcc -E -dM -

nico88desmo
03-01-2007, 20:26
questo comando me lo segno...mi potrà sicuramente servire :D
Grazie! :cool: