#include <stdio.h>

#define I_HATE_MACRO2(a, b) a ## b
#define I_HATE_MACRO(a, b) I_HATE_MACRO2(a, b)
#define ASSERT_ARRAY(a) \
    typedef struct { \
        int I_HATE_MACRO(must_be_an_array_,__LINE__) : ((void*)&(a) == (void*)(a)); \
    } I_HATE_MACRO(must_be_an_array_,__LINE__)

int main() {
    int test[] = {1,2,3};
    int test2;
    int *test3;

    ASSERT_ARRAY(test);
    ASSERT_ARRAY(test2);
    ASSERT_ARRAY(test3);

    return 0;
}