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++


Anmelden zum Antworten