main.hh
author Mario de Sousa <msousa@fe.up.pt>
Tue, 16 Oct 2012 18:23:16 +0100
changeset 679 2f5618c0039a
parent 654 7421cb63defa
child 760 d736dc9e9e51
permissions -rw-r--r--
Remove line printing debug info.
597
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     1
/*
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     2
 *  matiec - a compiler for the programming languages defined in IEC 61131-3
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     3
 *  Copyright (C) 2003-2011  Mario de Sousa (msousa@fe.up.pt)
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     4
 *  Copyright (C) 2007-2011  Laurent Bessard and Edouard Tisserant
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     5
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     6
 *  This program is free software: you can redistribute it and/or modify
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     7
 *  it under the terms of the GNU General Public License as published by
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     8
 *  the Free Software Foundation, either version 3 of the License, or
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
     9
 *  (at your option) any later version.
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    10
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    11
 *  This program is distributed in the hope that it will be useful,
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    14
 *  GNU General Public License for more details.
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    15
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    16
 *  You should have received a copy of the GNU General Public License
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    17
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    18
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    19
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    20
 * This code is made available on the understanding that it will not be
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    21
 * used in safety-critical situations without a full and competent review.
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    22
 */
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    23
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    24
/*
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    25
 * An IEC 61131-3 compiler.
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    26
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    27
 * Based on the
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    28
 * FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10)
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    29
 *
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    30
 */
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    31
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    32
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    33
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    34
#ifndef _MAIN_HH
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    35
#define _MAIN_HH
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    36
604
2989051a0a64 Fixing includes to define INTxx_MAX etc...
Mario de Sousa <msousa@fe.up.pt>
parents: 597
diff changeset
    37
2989051a0a64 Fixing includes to define INTxx_MAX etc...
Mario de Sousa <msousa@fe.up.pt>
parents: 597
diff changeset
    38
597
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    39
 /* Function used throughout the code --> used to report failed assertions (i.e. internal compiler errors)! */
604
2989051a0a64 Fixing includes to define INTxx_MAX etc...
Mario de Sousa <msousa@fe.up.pt>
parents: 597
diff changeset
    40
#include <stddef.h>  /* required for NULL */
2989051a0a64 Fixing includes to define INTxx_MAX etc...
Mario de Sousa <msousa@fe.up.pt>
parents: 597
diff changeset
    41
 
597
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    42
#define ERROR               error_exit(__FILE__,__LINE__)
654
7421cb63defa list_c: initial capacity. ERROR_MSG(msg,...) supports optional arguments now.
agraeper
parents: 645
diff changeset
    43
#define ERROR_MSG(msg, ...) error_exit(__FILE__,__LINE__, msg, ## __VA_ARGS__)
597
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    44
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    45
extern void error_exit(const char *file_name, int line_no, const char *errmsg = NULL, ...);
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    46
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    47
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    48
7326a0658104 Add file missing from previous commit.
Mario de Sousa <msousa@fe.up.pt>
parents:
diff changeset
    49
607
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    50
 /* Get the definition of INT16_MAX, INT16_MIN, UINT64_MAX, INT64_MAX, INT64_MIN, ... */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    51
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    52
#define __STDC_LIMIT_MACROS /* required to have UINTxx_MAX defined when including stdint.h from C++ source code. */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    53
#include <stdint.h>         
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    54
#include <limits>
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    55
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    56
#ifndef   UINT64_MAX 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    57
  #define UINT64_MAX (std::numeric_limits< uint64_t >::max())
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    58
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    59
#ifndef    INT64_MAX 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    60
  #define  INT64_MAX (std::numeric_limits<  int64_t >::max())
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    61
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    62
#ifndef    INT64_MIN
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    63
  #define  INT64_MIN (std::numeric_limits<  int64_t >::min()) 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    64
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    65
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    66
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    67
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    68
/* Determine, for the current platform, which datas types (float, double or long double) use 64 and 32 bits. */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    69
/* NOTE: We cant use sizeof() in pre-processor directives, so we have to do it another way... */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    70
/* CURIOSITY: We can use sizeof() and offsetof() inside static_assert() but:
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    71
 *          - this only allows us to make assertions, and not #define new macros
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    72
 *          - is only available in the C standard [ISO/IEC 9899:2011] and the C++ 0X draft standard [Becker 2008]. It is not available in C99.
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    73
 *          https://www.securecoding.cert.org/confluence/display/seccode/DCL03-C.+Use+a+static+assertion+to+test+the+value+of+a+constant+expression
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    74
 *         struct {int a, b, c, d} header_t;
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    75
 *  e.g.:  static_assert(offsetof(struct header_t, c) == 8, "Compile time error message.");
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    76
 */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    77
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    78
#include <float.h>
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    79
#if    (LDBL_MANT_DIG == 53) /* NOTE: 64 bit IEC559 real has 53 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    80
  #define long_double long double
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    81
  #define real64_t long_double /* so we can later use #if (real64_t == long_double) directives in the code! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    82
  #define REAL64_MAX  LDBL_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    83
#elif  ( DBL_MANT_DIG == 53) /* NOTE: 64 bit IEC559 real has 53 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    84
  #define real64_t double
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    85
  #define REAL64_MAX  DBL_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    86
#elif  ( FLT_MANT_DIG == 53) /* NOTE: 64 bit IEC559 real has 53 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    87
  #define real64_t float
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    88
  #define REAL64_MAX  FLT_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    89
#else 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    90
  #error Could not find a 64 bit floating point data type on this platform. Aborting...
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    91
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    92
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    93
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    94
#if    (LDBL_MANT_DIG == 24) /* NOTE: 32 bit IEC559 real has 24 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    95
  #ifndef long_double 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    96
    #define long_double long double
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    97
  #endif  
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    98
  #define real32_t long_double /* so we can later use #if (real32_t == long_double) directives in the code! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
    99
  #define REAL32_MAX  LDBL_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   100
#elif  ( DBL_MANT_DIG == 24) /* NOTE: 32 bit IEC559 real has 24 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   101
  #define real32_t double
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   102
  #define REAL32_MAX  DBL_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   103
#elif  ( FLT_MANT_DIG == 24) /* NOTE: 32 bit IEC559 real has 24 bits for mantissa! */
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   104
  #define real32_t float
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   105
  #define REAL32_MAX  FLT_MAX
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   106
#else 
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   107
  #error Could not find a 32 bit floating point data type on this platform. Aborting...
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   108
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   109
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   110
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   111
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   112
#include <math.h>
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   113
#ifndef INFINITY
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   114
  #error Could not find the macro that defines the value for INFINITY in the current platform.
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   115
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   116
#ifndef NAN
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   117
  #error Could not find the macro that defines the value for NAN in the current platform.
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   118
#endif
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   119
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   120
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   121
645
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   122
/* get the printf format macros for printing variables of fixed data size
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   123
 * e.g.  int64_t v; printf("value=%"PRId64" !!\n", v);
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   124
 * e.g. uint64_t v; printf("value=%"PRIu64" !!\n", v);
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   125
 * e.g. uint64_t v; printf("value=%"PRIx64" !!\n", v);  // hexadecimal format
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   126
 */
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   127
#define __STDC_FORMAT_MACROS
e01ede1c9862 Allow the use of PRId64, PRIu64 and PRIx64 printf formating macros globally.
Mario de Sousa <msousa@fe.up.pt>
parents: 607
diff changeset
   128
#include <inttypes.h>
607
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   129
be9ba3531afb cleaning up code. Changing HUGE_VAL to INFINITY.
Mario de Sousa <msousa@fe.up.pt>
parents: 604
diff changeset
   130
654
7421cb63defa list_c: initial capacity. ERROR_MSG(msg,...) supports optional arguments now.
agraeper
parents: 645
diff changeset
   131
#endif // #ifndef _MAIN_HH