PDA

View Full Version : [C- UNIX] Compilazione codice "inline" su architettura HP-ITANIUM


fpucci
26-11-2007, 14:34
In questi giorni mi sto occupando del portig del codice da architettura HP PA-RISC ad architettura HP-ITANIUM (64 bit).

Il codice attuale viene compilato e gira perfettamente sotto PA-RISC, compilato con le seguenti opzioni:
CFLAGS = -Ae +z +O3 +Oaggressive +Oinline +Oloop_block +Oloop_transform +DA2.0W $(INCLUDE)

Portando lo stesso identico codice sulla macchina ITANIUM, non mi compila e precisamente mi riporta il seguente errore:

"ricUtil.c", line 3549: error #2077-D: this declaration has no storage class or type specifier
inline int RicGetKeyVal (int iTipoFlusso,...)

Il codice ITANIUM viene compilato con le seguenti opzioni:
CFLAGS = -Ae +DD64 -fast

Praticamente mi segnala l'errore in tutte le funzioni che ho dichiarato inline.

Come si risolve il problema?

cionci
27-11-2007, 12:33
Con tutte quelle ottimizzazione è inutile usare l'inline nel codice...

fpucci
27-11-2007, 12:48
Con tutte quelle ottimizzazione è inutile usare l'inline nel codice...

Il problema è hce sto esegunedo porting del codice e DEVO RIUSCIRE a compilare senza apportare modifiche, se non proprio in casi assolutamente estremi. Questo perché lo stesso codice deve girare du diverse piattaforme e vorrei apportare modifiche solo alle opzioni di compilazioni dei vari ambienti.

Comunque, grazie del tuo consiglio
Anche io ho penso che, se non posso risolvere altrimenti, toglierò l'inline....

AnonimoVeneziano
27-11-2007, 17:18
Che compilatore usi? Non mi sembra che "inline" sia una parola chiave nel C ANSI , è stato aggiunto nel C99 .

Se il compilatore che stai usando attualmente non supporta il C99 non credo tu possa riuscirci . Cerca di abilitare il supporto C99 o usa una cosa tipo -Dinline="" in modo da togliere "inline" da tutte le funzioni senza mettere mano al codice

Ciao

cionci
27-11-2007, 17:21
usa una cosa tipo -Dinline="" in modo da togliere "inline" da tutte le funzioni senza mettere mano al codice

Ottima idea ;)

fpucci
28-11-2007, 10:31
Che compilatore usi? Non mi sembra che "inline" sia una parola chiave nel C ANSI , è stato aggiunto nel C99 .

Se il compilatore che stai usando attualmente non supporta il C99 non credo tu possa riuscirci . Cerca di abilitare il supporto C99 o usa una cosa tipo -Dinline="" in modo da togliere "inline" da tutte le funzioni senza mettere mano al codice

Ciao

Il compilatore che uso normalmente è

La versione del compilatore è la seguente:
HP aC++/ANSI C B3910B A.06.05

Compilando con -Ae su PA-RISC si invoca il compilatore ANSI-C ed inoltre (cmme da "man cc") prevede anche le estensioni per C99 e per il sistema operativo HP-UX.

Ottima l'dea di utilizzare la define per neutralizzare l'inline nel codice senza modificarlo. :)