blob: 2dedb3aca9130d7647764ef57a62104dc9fd8933 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
// https://clang.llvm.org/extra/clang-tidy/checks/bugprone-macro-repeated-side-effects.html
#define MACRO_WITHOUT_REPEATED_ARG(x) (x)
#define MACRO_WITH_REPEATED_ARG(x) ((x) + (x))
static int g;
int function_with_side_effects(int i)
{
g += i;
return g;
}
void test()
{
int i;
i = MACRO_WITHOUT_REPEATED_ARG(1); // OK
i = MACRO_WITH_REPEATED_ARG(1); // OK
i = MACRO_WITHOUT_REPEATED_ARG(i); // OK
i = MACRO_WITH_REPEATED_ARG(i); // OK
i = MACRO_WITHOUT_REPEATED_ARG(function_with_side_effects(i)); // OK
i = MACRO_WITH_REPEATED_ARG(function_with_side_effects(i)); // NO WARNING
i = MACRO_WITHOUT_REPEATED_ARG(i++); // OK
i = MACRO_WITH_REPEATED_ARG(i++); // WARNING
}
|