Programowanie pod 64 bit

0

Prosty program consolowy skompikowany pod 32 bity (lin czy win) dziala slicznie...

ale jak skompiluje pod linuxem 64 (gentoo) to juz nie ladnie sie robi...
slawna procedurka:
int atoi(char*)
jest zamieniona (tak wynika z debuggera) na strtoll... czy pod 74 bitami int ma... 64 bity? int jest teraz long long ??
oraz pytanie z innej beczki..
co lepiej uzywac atoi czy strtoi ?

0

Różne architektury mogą i często mają zmienne różnych wielkości. Trzeba dodać informacje dla kompilatora jaką długość mają mieć zmienne np. int, float czy long.

0

chociaz standardowo owszem int jest taki pod jaki procek jest kompilowany system (win95 mialo tylko inaczej)

0
flabra napisał(a)

chociaz standardowo owszem int jest taki pod jaki procek jest kompilowany system (win95 mialo tylko inaczej)

Jesteś pewien, że chodziło o kompilator 32-bitowy na 32-bitowym procesorze?! :D
A nie o stare wywołania WinAPI z 3.11??

bartosak:
1.
sizeof(int) jest implementation-defined
Zalecenie jest takie, żeby int był naturalnego rozmiaru dla procesora, co daje 64-bity dla procka 64-bitowego, gdyż jego rejestry całkowite SĄ 64-bitowe. Oczywiście nie musi tak być...

6.2.5 Types
(...)
A ??plain?? int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).

A co znowu masz za problem? :) Użyłeś stałej zamiast sizeof()?

  • Najlepiej żadnej z tych funkcji, masz scanf() albo strumienie
  • Później atoi()
  • Jeżeli już musisz to strtoi() [!?] - tylko na czym to zadziała?
0

to moze mi powiedziec w jaki sposob mozna wykrywac rodzaje maszyn?
jak to ustawic?

#if SYSTEM=WIN32   // czy to wykryje windows 32 bit?

jak wykryc linuxa i jak wykryc linuxa 64 bit??

czy:

#define atoi( A ) strtoll( A )

jest dobra zamiana atoi na strtoll (STRing To Long Long)?

oraz ostatnie moje pytanie: czy jest mozliwosc ustawienia jakos TimeOUT dla funkcji connect() ? a czy ustawienie setsockopt RECVTIMEOUT i SNDTIMEOUT (czy jakos tak nie pamietam) dziala dla protokolu UDP czy tylko dla TCP?

1 użytkowników online, w tym zalogowanych: 0, gości: 1