summaryrefslogtreecommitdiff
path: root/prism/compiler/flex_array.h
blob: 7504b5fdd388b63a5645ee1694a2f564d9fae667 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * @file compiler/flex_array.h
 */
#ifndef PRISM_COMPILER_FLEX_ARRAY_H
#define PRISM_COMPILER_FLEX_ARRAY_H

/**
 * A macro for helper define a flexible array member. C99 supports `data[]`, GCC
 * supports `data[0]` as an extension, and older compilers require `data[1]`.
 */
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
    #define PM_FLEX_ARRAY_LENGTH   /* data[] */
#elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
    #define PM_FLEX_ARRAY_LENGTH 0 /* data[0] */
#else
    #define PM_FLEX_ARRAY_LENGTH 1 /* data[1] */
#endif

#endif