Permalänk
Medlem

C-kod och 64bits

Sitter och arbetar med c kod,
Får ut detta felmeddelande när jag kompelerar i terminalen:

warning: cast from pointer to integer of different size

beror på att snowleopard kör 64, villket gör att int'sarna är på 64bits eller något åt de hållet,

hur fixar jag detta?..

Permalänk
Medlem

Visa gärna koden, men kan nog säga att bra skriven kod, där skall det inte spela en roll hur stor plats en pekare tar.

Permalänk
Medlem

koden jag arbetar med är skapad för att analysera hur pekare fungerar. står t.o.m i koden att det inte ska fungera på 64-bits så jag antar att jag får gilla läget om emulera skiten istället.

Det finns annars inget smart kommando att kompilera kod i en terminal som 32 bit? (snow leopard)

Permalänk
Hedersmedlem

gcc -m32 kanske?

Permalänk
Medlem

Tackar, verkar fungera

Permalänk

Antar att du försöker använda en int som troligtvis då är 32 bitar medan pekaren är 64 bitar.
Om du nu inte vill använda 32 bitars kompilering så kan du prova med att byta int till int64_t.

Annars tror jag att size_t är 64 bitar på 64-bitarssystem och 32 bitar på 32-bitarssystem.

Permalänk
Medlem

Man bör ha en mycket god anledning för att casta pekare till int. Det bryter dessutom ofta mot strict aliasing att göra det.

Om man verkligen behöver kan man göra en ny typ pointer sized int eller liknande som definieras olika beroende på platform. Tänk även på att long byter storlek på vissa 64-bits-modeller så dina structs kan få olika storlek. Bäst är nog att använda stdint så du vet hur stora saker är

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.