limits.h kell vagy sem?

Fórumok

Sziasztok!

Azzal talatam magam szemben, hogy az egyik kis kodban benne van az UINT_MAX, a limits.h pedig nincs beinkludolva(egy masolt kod, az eredetiben sem volt, ha minden igaz). Debian alatt szepen le is fordul, g++ 4.3.2-vel, official verzio, 32bites architectura.

Ellenben most egy ubuntu gepen kene leforditani, az mondjuk x86_64-es arch, de ugyanaz a g++, es azt mondja, hogy
"‘UINT_MAX’ was not declared in this scope"

segiteni megmaragyazni ezt valaki, miert van ez? es ki lehet e javitani, hogy forduljon ubuntu is, a kod megvaltoztatasa nelkul?

koszi,
Zsolt

Hozzászólások

Miert nem valtozhat a kod?


#ifndef UINT_MAX
#include <limits.h>
#endif

amugy meg valszinu azert, mert valamelyik include-olt header nagyon melyen debian alatt meg include-olja a limits.h-t itt mar nem.
Szvsz ez mindenkepp kodban javitando hiba, az UINT_MAX hasznalatahoz include-olni KELL a limits.h-t fuggetlen attol, hogy hol lattad, hogy nem kell, es hogy hol mukodott.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Ha már C++, akkor:


#include<limits>
...
std::numeric_limits<unsigned int>::max()

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

nagyszeru :)

de ha most ha valami 'ansi' dologra gondolok, akkor a limits.h -t includolni _kell_ ez nem opcio, vagy ajanlas... ha hasznalni akarod a benne definialtakat, akkor include.

uint_maxot hasrautesszeruen hardcodeolni mar az almoskonyvek szerint sem jelent jo szerencset

--
When in doubt, use brute force.

Szerintem kell.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.