please could anyone help me why such a definition of symbolic constants yields error definition of following static variables within functions: error: storage size of ‘variable’ isn’t constant
        #define SAMPLE_RATE 200 /* Sample rate in Hz. */
        #define MS_PER_SAMPLE   ( (double) 1000/ (double) SAMPLE_RATE)
        #define MS10    ((int) (10/ MS_PER_SAMPLE + 0.5))
        #define MS25    ((int) (25/MS_PER_SAMPLE + 0.5))
        #define MS30    ((int) (30/MS_PER_SAMPLE + 0.5))
        #define MS80    ((int) (80/MS_PER_SAMPLE + 0.5))
        #define MS95    ((int) (95/MS_PER_SAMPLE + 0.5))
        #define MS100   ((int) (100/MS_PER_SAMPLE + 0.5))
        #define MS125   ((int) (125/MS_PER_SAMPLE + 0.5))
        #define MS150   ((int) (150/MS_PER_SAMPLE + 0.5))
        #define MS160   ((int) (160/MS_PER_SAMPLE + 0.5))
        #define MS175   ((int) (175/MS_PER_SAMPLE + 0.5))
        #define MS195   ((int) (195/MS_PER_SAMPLE + 0.5))
        #define MS200   ((int) (200/MS_PER_SAMPLE + 0.5))
        #define MS220   ((int) (220/MS_PER_SAMPLE + 0.5))
        #define MS250   ((int) (250/MS_PER_SAMPLE + 0.5))
        #define MS300   ((int) (300/MS_PER_SAMPLE + 0.5))
        #define MS360   ((int) (360/MS_PER_SAMPLE + 0.5))
        #define MS450   ((int) (450/MS_PER_SAMPLE + 0.5))
        #define MS1000  SAMPLE_RATE
        #define MS1500  ((int) (1500/MS_PER_SAMPLE))
        #define DERIV_LENGTH    MS10
        #define LPBUFFER_LGTH ((int) (2*MS25))
        #define HPBUFFER_LGTH MS125#define WINDOW_WIDTH MS80            // Moving window integration width.
    #define FILTER_DELAY (int) (((double) DERIV_LENGTH/2) + ((double) LPBUFFER_LGTH/2 - 1) + (((double) HPBUFFER_LGTH-1)/2) + PRE_BLANK)  // filter delays plus 200 ms blanking delay
    #define DER_DELAY   WINDOW_WIDTH + FILTER_DELAY + MS100
    int lpfilt( int datum ,int init)
        {
        static long y1 = 0, y2 = 0 ;
        static int data[MS_PER_SAMPLE], ptr = 0 ;
        .....
int lpfilt( int datum ,int init)
    {
    static int data[MS_PER_SAMPLE], ptr = 0 ;
....
int hpfilt( int datum, int init )
    {
    static int data[HPBUFFER_LGTH], ptr = 0 ;
...
int deriv1(int x, int init)
    {
    static int derBuff[DERIV_LENGTH], derI = 0 ;
...
int deriv2(int x, int init)
    {
    static int derBuff[DERIV_LENGTH], derI = 0 ;
...
int mvwint(int datum, int init)
    {
    static int data[WINDOW_WIDTH], ptr = 0 ;
...
I haven't a clue what the problem might be, no matter if I retype the result of calculation with (int) it still yields an error. Is retyping not allowed in symbolic constant definition?
 
     
    