PDA

View Full Version : PROGRAMMA KE DISTINGUE SU KE OS STA GIRANDO


3nigma666
21-02-2005, 19:13
Salve a tutti. io sto scrivendo un programma ke deve girare sia sotto windows ke sotto linux,e a seconda dei due sistemi operativi deve eseguire o meno determinati pezzi di codice.
Che stringa di codice devo implementare per far si ke automaticamente il programma riconosca su ke macchina sta girando?
PS: la mia soluzione era ke trovava il file c:\windows\ntfs.si o cmq qualke altro tipo di file caratteristico di windows allora esegui sotto win altrimenti sotto linux.Volevo sapere se c'era qualke maniera piu ,come dire,professionale ...
Grazie mille a tutti
3NiGm@666

Ubi-Wan
21-02-2005, 19:34
ma perche' non scrivi all'interno del codice qualcosa cosi':


#if defined LINUX
//codice sotto linux
#elif defined WINDOWS
//codice sotto windows
#endif


poi all'inizio del programma scrivi #define LINUX o #define WINDOWS e compili. Io faccio cosi' per i miei programmi.

3nigma666
21-02-2005, 19:40
uhmm potrebbe essere una idea

3nigma666
21-02-2005, 19:44
io ho fatto cosi

#define LINUX


.... codice ....
.... codice ----


#if defined LINUX
//codice


ovviamente mi da errore..riusciresti cortesemente a spiegarmi meglio la sintassi ke utilizzi facendomi un esempio?GRazie mille
;)

3NiGm@666

Ubi-Wan
21-02-2005, 20:19
Ok, mettiamo il caso che devi definire una funzione clear() per pulire lo schermo.


#define LINUX

void clear(void)
{
#if defined(LINUX)
system("clear");
#elif defined(WINDOWS)
system("cls");
#endif
}



se non sbaglio il comando per pulire sotto linux e' clear

end.is.forever
21-02-2005, 21:02
#ifdef
oppure negato
#ifndef

3nigma666
21-02-2005, 23:04
grazie mille ragazzi provo subito?

3nigma666
21-02-2005, 23:38
mi da errore su questo: #if defined(LINUX) ho messo il define ma nn capisco il perke! non bisogna includere nessuna libreria ?

end.is.forever
22-02-2005, 00:01
Prova a sostituire con
#ifdef LINUX
...
#endif

3nigma666
22-02-2005, 09:42
se faccio

#if defined LINUX

codice



#ifdef LINUX

codice

#endif

se metto #ifndef mi dice errore nella fine della macro (praticamente non trova la fine della macro)

anke se sono sotto windows mi esegue cmq quel codice

ilsensine
22-02-2005, 15:19
Non usare LINUX, usa __linux__ (viene automaticamente definita dal gcc).
Altra macro utile è __GNUC__, definita se stai compilando con il gcc.

cionci
22-02-2005, 15:33
Per Windows utilizza #ifdef WIN32

3nigma666
23-02-2005, 01:22
ok grazie mille