2009-08-29 20 views
7

Ich versuche, mich etwas C zu lernen, und habe in was wahrscheinlich ein einfaches Problem geraten. Ich versuche, einige Code zu kompilieren, die folgende Erklärung enthält:"Int32 undeclared" gcc Fehler

int32 count; 

Dies führt jedoch zu einem Fehler bei der Kompilierung:

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

Gibt es eine bestimmte Kompilierung-Option Ich muss Set für gcc oder eine #include Direktive, die das löst?

p.s. Ich laufe auf Ubuntu Intrepid.

Antwort

22

Der Typ int32 ist kein Standard C - das Standardäquivalent ist #include <stdint.h> und verwenden Sie int32_t.

Wie auch immer, als POSIX-System, auf Ubuntu-Ebene int ist (mindestens) 32 Bit, so dass Sie einfach verwenden könnten.

+4

Zwei Dinge zu beachten: 1) '' ist Standard, aber es ist C99 - kein Problem für gcc, kann aber anderswo sein (z. B. MSVC); und 2) POSIX erfordert nicht, dass "int" 32-Bit ist, und es gibt Unixe da draußen, für die es nicht wahr ist. –

+1

Es gibt vier Programmierumgebungen, die von POSIX als Standard (hier aufgeführt: http://opengroup.org/onlinepubs/009695399/utilities/c99.html#tagtcjh_11) zugelassen sind. Für alle muss "int" mindestens 32 sein Bits. – caf

+0

Um den C-Header 'stdint.h' in C++ einzuschließen, haben Sie #include ' –

-1

Die Größe von 'int' hängt von dem verwendeten Compiler ab. Für dieselbe Zielarchitektur können verschiedene Compiler unterschiedliche Größen für 'int' haben. Es hängt davon ab, wie sie die Zielfunktionen verwenden. Zum Beispiel hat Turbo C, der unter Windows läuft, eine int-Größe von 2 Bytes (das ist eine ausführbare DOS-Datei). Während Visual C die Größe von 'int' als 32 (win32 ausführbar) angibt.

Im Allgemeinen wird die Größe von 'int' durch die Größe des Worts gemäß der Zielarchitektur bestimmt. Die Größe des Wortes wird durch wiedergegeben. 1. Verarbeitungsgröße der arithmetischen Operationen. 2. Größe der allgemeinen Register. 3. Größe der Adresse, die zur Bezeichnung eines Standorts verwendet wird.

In Ihrem Fall verwenden Sie jedoch fälschlicherweise ein Schlüsselwort 'int32' für einen Datentyp. Überprüfen Sie den Zielcomputer und korrigieren Sie das entsprechend verwendete Keyword.

+0

Es ist einer der neueren 'typedef's in C99 angegeben und ist in der Kopfzeile' stdint.h' verfügbar. – TechZilla

+0

'int32' ist kein Schlüsselwort in Standard C. –

Verwandte Themen