cvarulong

Declaring ULONG_MAX in C


I have been doing a lot of research on ULONG_MAX and trying to find out how to declare it, but it doesn't seem to work. I using the header #include <stdio.h> and #include <limits.h to make ULONG_MAX work. There is nothing much about ULONG_MAX online, so that is making it difficult for me to use it. I feel like I am using ULONG_MAX wrong.

Question: How to declare ULONG_MAX

Sample Code:

#include <stdio.h>
#include <limits.h>

main(){
  ULONG_MAX number;

  return 0;
}

Error:

gcc version 4.6.3

main.c:4:1: warning: return type defaults to 'int' [-Wimplicit-int]
 main(){
 ^~~~
main.c: In function 'main':
main.c:5:13: error: expected ';' before 'number'
   ULONG_MAX number;
             ^~~~~~
main.c:6:3: error: 'num' undeclared (first use in this function)
   num = ULONG_MAX;
   ^~~
main.c:6:3: note: each undeclared identifier is reported only once for each function it appears in

exit status 1

The compiler I am using: Repl.it


Solution

  • ULONG_MAX is not a type, it's the maximum value allowed for an unsigned long type, typically defined as something like:

    #define ULONG_MAX 0xFFFFFFFFUL
    

    So, semantically, there is no difference between:

    ULONG_MAX number;
    

    and the clearly incorrect:

    42 number;
    

    In order to use the value, you would do something like:

    unsigned long bigVal = ULONG_MAX;