Files
codeql/cpp/ql/test/library-tests/macros/macros/test.c
2018-08-02 17:53:23 +01:00

89 lines
1.3 KiB
C

int x;
#define STMT x = 1;
#define BLOCK { \
x = 1; \
}
#define STUFF_AND_BLOCK x = 1; \
{ \
x = 1; \
} \
x = 1;
#define STUFF_AND_START_BLOCK x = 1; \
{ \
x = 1;
#define STUFF_AND_END_BLOCK x = 1; \
} \
x = 1;
#define STMT1 STMT
#define STMT2 STMT
#define STMT3 STMT
#define MEGA_MACRO1 STMT1 \
STUFF_AND_START_BLOCK \
STMT2 \
STUFF_AND_END_BLOCK \
STMT3
#define STMT4 STMT
#define STMT5 STMT
#define STMT6 STMT
#define MEGA_MACRO2 STMT4 \
STUFF_AND_START_BLOCK \
STMT5 \
} \
STMT6
void f1(void) {
{
STMT
}
{
x = 1;
STMT
x = 1;
}
BLOCK
STUFF_AND_BLOCK
{
x = 1;
STUFF_AND_END_BLOCK
STUFF_AND_START_BLOCK
x = 1;
}
MEGA_MACRO1
MEGA_MACRO2
}
#define P2 } P1
#define P1 { P0 }
#define P0 ;
void f2(void) {
{ P2
}
#define P5(x) } x
#define P4 { P3 }
#define P3 ;
void f3(void) {
{ P5(P4)
}