Frage zu (c)limits.h
-
Hallo zusammen,
ich habe gelesen, dass die Typgrößeren der verschiedenen Typen in der Headerdatei climits festgelegt sind? Ich meine, dass z.B. die maximale Größe einer int Variable oder von float etc. in dieser Datei gespeichert ist. Hier habe ich folgenden Link:http://www.cplusplus.com/reference/clibrary/climits/
Meine Fragen sind nun:
1.) Stimmt das wirklich so oder übersehe ich etwas?
2.) Heißt es nun climits.h oder limits.h?
3.) Angenommen, das wirklich die größen in dieser Headerdatei stehen, könnte ich diese nicht einfach ändern, sodass ich beispielsweise riesen integer-Werte nutzen könnte?
4.) Ich habe mal in meinen Ordnern nachgeschaut und auch die Datei climits.h gefunden. Dort steht aber nur folgendes:/* climits.h Standard C header file wrapper for limits.h */ /* * C/C++ Run Time Library - Version 11.0 * * Copyright (c) 1997, 2002 by Borland Software Corporation * All Rights Reserved. * */ /* $Revision: 9.4 $ */ #define __USING_CNAME__ #include <_lim.h> #undef __USING_CNAME__
Also habe ich in lim.h nachgeguckt, doch diese Datei habe ich nicht gefunden? Könnt ihr mir helfen?
Vielen Dank
lg, freakC++Edit: Ich habe die Datei _lim.h gefunden und tatsächlich steht da folgendes drin. Kann ich diese nun ändern (das wäre ja einfach nur irre):
/* _lim.h - Internal version of "C" limits.h header Defines implementation specific limits on type values. */ /* * C/C++ Run Time Library - Version 11.0 * * Copyright (c) 1987, 2002 by Borland Software Corporation * All Rights Reserved. * */ #ifndef __LIMITS_H #define __LIMITS_H #define _INC_LIMITS /* MSC Guard name */ #include <_stddef.h> #define CHAR_BIT 8 /* number of bits in a char */ #define MB_LEN_MAX 2 /* max. # bytes in multibyte char */ #define SCHAR_MIN (-128) /* minimum signed char value */ #define SCHAR_MAX 127 /* maximum signed char value */ #define UCHAR_MAX 255 /* maximum unsigned char value */ #if ('\x80' < 0) #define CHAR_MIN SCHAR_MIN /* minimum char value */ #define CHAR_MAX SCHAR_MAX /* maximum char value */ #else #define CHAR_MIN 0 #define CHAR_MAX UCHAR_MAX #endif #define SHRT_MIN (-32767-1) /* minimum signed short value */ #define SHRT_MAX 32767 /* maximum signed short value */ #define USHRT_MAX 65535U /* maximum unsigned short value */ #define LONG_MIN (-2147483647L-1) /* minimum signed long value */ #define LONG_MAX 2147483647L /* maximum signed long value */ #define ULONG_MAX 4294967295UL /* maximum unsigned long value */ #if defined (_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS >= 64) #define _I64_MIN (-9223372036854775807i64-1) /* minimum signed __int64 value */ #define _I64_MAX 9223372036854775807i64 /* maximum signed __int64 value */ #define _UI64_MAX 18446744073709551615ui64 /* maximum unsigned __int64 value */ #endif #define INT_MIN LONG_MIN /* minimum signed int value */ #define INT_MAX LONG_MAX /* maximum signed int value */ #define UINT_MAX ULONG_MAX /* maximum unsigned int value */ #if defined(_POSIX_) #define _POSIX_ARG_MAX 4096 #define _POSIX_CHILD_MAX 6 #define _POSIX_LINK_MAX 8 #define _POSIX_MAX_CANON 255 #define _POSIX_MAX_INPUT 255 #define _POSIX_NAME_MAX 14 #define _POSIX_NGROUPS_MAX 0 #define _POSIX_OPEN_MAX 16 #define _POSIX_PATH_MAX 255 #define _POSIX_PIPE_BUF 512 #define _POSIX_SSIZE_MAX 32767 #define _POSIX_STREAM_MAX 8 #define _POSIX_TZNAME_MAX 3 #define ARG_MAX (16384 - 256) /* 16k-(heap overhead+safety) */ #define CHILD_MAX 32 #define LINK_MAX _POSIX_LINK_MAX #define MAX_CANON _POSIX_MAX_CANON #define MAX_INPUT _POSIX_MAX_INPUT #define NAME_MAX 255 #define NGROUPS_MAX 16 #define OPEN_MAX 32 #define PATH_MAX 512 #define PIPE_BUF _POSIX_PIPE_BUF #define SSIZE_MAX _POSIX_SSIZE_MAX #define STREAM_MAX 20 #define TZNAME_MAX 10 #endif /* POSIX */ #endif /* __LIMITS_H */
-
freakC++ schrieb:
2.) Heißt es nun climits.h oder limits.h?´
Es heißt climits und nicht climits.h.
Manche compiler bieten aber zusätzlich eine limits.h an, um die umsteiger nicht zu verwirren.
Nehmen solltest Du aber die limits.
-
ok. Aber kann ich diese nun bearbeiten und beispielsweise ints vergrößern??
Vielen Dank
lg, freakC++
-
freakC++ schrieb:
ok. Aber kann ich diese nun bearbeiten und beispielsweise ints vergrößern??
Nein, kein Bißchen. Du kannst mit der Datei nur nachschauen, was Sache ist.
-
freakC++ schrieb:
Hallo zusammen,
ich habe gelesen, dass die Typgrößeren der verschiedenen Typen in der Headerdatei climits festgelegt sind?Aaaah, ja! Und das weißt du nicht mehr? *scr*
freakC++ schrieb:
könnte ich diese nicht einfach ändern, sodass ich beispielsweise riesen integer-Werte nutzen könnte?
Du kannst damit allenfalls Chaos produzieren, mehr Bytes bekommen die Datentypen dadurch nicht. Die Bytes pro Datentyp sind mit den Maximalwerten voll ausgelastet.
-
Hallo,
das bedeutet also, dass ich nichts mehr verändern kann (wäre auch zu schön gewesen!)???Vielen Dank
lg, freakC++
-
freakC++ schrieb:
Hallo,
das bedeutet also, dass ich nichts mehr verändern kann (wäre auch zu schön gewesen!)???Nein. Das geht nicht. Das ganze ist ledigilch eine Hilfe, mit denen der Programmierer jederzeit weiss, wie die Maxima/Minima aussehen. Die Grössen sind von der Implementierung festgelegt und dort vermerkt.
-
Das ist ein bißchen wie mit nem Auto und dem Fahrzeugschein: Boah, stehen das die PS drin? Kann ich da auch was höheres eintragen und dann schneller fahren?
-
ok, danke!
Vielen Dank
lg, freakC++