зеркало из https://github.com/mozilla/gecko-dev.git
29 строки
696 B
C++
29 строки
696 B
C++
// 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
|
|
}
|