Tech.Coollections

Gamza 2022. 3. 2. 16:48

// Hello world! Cplayground is an online sandbox that makes it easy to try out
// code.

#include <stdio.h>
#include <stdlib.h>

#define _GET_MACRO_LIST_1(PRE,POST)   PRE ## POST
#define _GET_MACRO_LIST_2(PRE,POST)   PRE ## 0 ## POST , PRE ## 1 ## POST
#define _GET_MACRO_LIST_3(PRE,POST)   _GET_MACRO_LIST_2(PRE,POST) , PRE ## 2 ## POST
#define _GET_MACRO_LIST_4(PRE,POST)   _GET_MACRO_LIST_3(PRE,POST) , PRE ## 3 ## POST
#define _GET_MACRO_LIST_5(PRE,POST)   _GET_MACRO_LIST_4(PRE,POST) , PRE ## 4 ## POST
#define _GET_MACRO_LIST_6(PRE,POST)   _GET_MACRO_LIST_5(PRE,POST) , PRE ## 5 ## POST
#define _GET_MACRO_LIST_7(PRE,POST)   _GET_MACRO_LIST_6(PRE,POST) , PRE ## 6 ## POST
#define _GET_MACRO_LIST_8(PRE,POST)   _GET_MACRO_LIST_7(PRE,POST) , PRE ## 7 ## POST
#define _GET_MACRO_LIST_9(PRE,POST)   _GET_MACRO_LIST_8(PRE,POST) , PRE ## 8 ## POST
#define _GET_MACRO_LIST_10(PRE,POST)  _GET_MACRO_LIST_9(PRE,POST) , PRE ## 9 ## POST
#define _GET_MACRO_LIST_11(PRE,POST)  _GET_MACRO_LIST_10(PRE,POST), PRE ## 10 ## POST
#define _GET_MACRO_LIST_12(PRE,POST)  _GET_MACRO_LIST_11(PRE,POST), PRE ## 11 ## POST
#define _GET_MACRO_LIST_13(PRE,POST)  _GET_MACRO_LIST_12(PRE,POST), PRE ## 12 ## POST
#define _GET_MACRO_LIST_14(PRE,POST)  _GET_MACRO_LIST_13(PRE,POST), PRE ## 13 ## POST
#define _GET_MACRO_LIST_15(PRE,POST)  _GET_MACRO_LIST_14(PRE,POST), PRE ## 14 ## POST
#define _GET_MACRO_LIST_16(PRE,POST)  _GET_MACRO_LIST_15(PRE,POST), PRE ## 15 ## POST
#define _GET_MACRO_LIST_17(PRE,POST)  _GET_MACRO_LIST_16(PRE,POST), PRE ## 16 ## POST
#define _GET_MACRO_LIST_18(PRE,POST)  _GET_MACRO_LIST_17(PRE,POST), PRE ## 17 ## POST
#define _GET_MACRO_LIST_19(PRE,POST)  _GET_MACRO_LIST_18(PRE,POST), PRE ## 18 ## POST
#define _GET_MACRO_LIST_20(PRE,POST)  _GET_MACRO_LIST_19(PRE,POST), PRE ## 19 ## POST

#define CAT(a, ...) a ## __VA_ARGS__ 
#define _GET_MACRO_LIST(PRE,POST,COUNT) CAT( _GET_MACRO_LIST_, COUNT )(PRE,POST)


#define A0_TEST  0
#define A1_TEST  1
#define NUMBER_OF_A_TEST 2 

int main() {
    int A_TEST_LIST[] = { _GET_MACRO_LIST( A, _TEST, NUMBER_OF_A_TEST ) };
    
    for( int i=0; i<NUMBER_OF_A_TEST; i++ ){
        printf( "%d\n", A_TEST_LIST[i] );
    }
    
    return 0;
}