2009-08-29 10 views
7

Sto provando ad apprendermi un po 'di C, e mi sono imbattuto in quello che probabilmente è un problema semplice. Sto cercando di compilare un codice che contiene la seguente dichiarazione:"int32 undeclared" gcc error

int32 count; 

Tuttavia, questo si traduce in un errore in fase di compilazione:

 
test.c:21: error: ‘int32’ undeclared (first use in this function) 

C'è una particolare opzione di compilazione che ho bisogno di impostato per gcc o una direttiva #include che risolverà questo problema?

p.s. Sono in esecuzione su Ubuntu Intrepid.

risposta

22

Il tipo int32 non è standard C - l'equivalente standard è #include <stdint.h> e utilizzare int32_t.

Tuttavia, come un sistema POSIX, su Ubuntu plain int è (almeno) 32 bit in modo da poterlo usare.

+4

Due cose di nota: 1) '' è standard, ma è C99 - non è un problema per gcc, ma può essere altrove (ad es. MSVC); e 2) POSIX non richiede che 'int' sia a 32 bit, e ci sono gli Unix là fuori per i quali non è vero. –

+1

Esistono quattro ambienti di programmazione consentiti da POSIX come predefinito (elencati qui: http://opengroup.org/onlinepubs/009695399/utilities/c99.html#tagtcjh_11), i quali richiedono che 'int' sia almeno 32 bit. – caf

+0

Per includere l'intestazione C 'stdint.h' in C++ si' #include ' –

-1

La dimensione di "int" dipende dal compilatore che si utilizza. Per la stessa architettura di destinazione, diversi compilatori possono avere dimensioni diverse per "int". Dipende da come stanno utilizzando le caratteristiche di destinazione. Ad esempio, Turbo C in esecuzione su Windows ha una dimensione "int" di 2 byte (è un eseguibile DOS). Mentre Visual C fornisce la dimensione di 'int' come 32 (eseguibile win32).

In generale, la dimensione di 'int' è determinata dalla dimensione della parola secondo l'architettura di destinazione. La dimensione della parola viene riflessa da 1. Dimensione di elaborazione delle operazioni aritmetiche. 2. Dimensioni dei registri di uso generale. 3. Dimensione dell'indirizzo utilizzato per designare una posizione.

Tuttavia nel tuo caso stai usando erroneamente una parola chiave 'int32' per un tipo di dati. Controllare il computer di destinazione e correggere la parola chiave utilizzata di conseguenza.

+0

È uno dei più recenti' typedef' specificato in C99 ed è disponibile nell'intestazione 'stdint.h'. – TechZilla

+0

'int32' non è una parola chiave in standard C. –