Notice that the macro EACH_OBJ_TEST_0 begins a loop block (but not ending it), another macro END_EACH_OBJ_TEST_0 should be used to end the loop block.
Put the caret on the function func_after_test, and do a find reference on it, VA fails to show any reference.
bool test_obj(int* p)
{
return p != nullptr;
}
#define EACH_OBJ_TEST_0(p, __IS_SEL) for( ; p; (p)++) { if( !__IS_SEL(p) ) continue;
#define END_EACH_OBJ_TEST_0 }
#define EACH_OBJ_TEST(p) EACH_OBJ_TEST_0(p, test_obj)
#define END_EACH_OBJ_TEST END_EACH_OBJ_TEST_0
void func_before_test()
{
}
void test_function_1(int* p)
{
EACH_OBJ_TEST(p)
p++;
END_EACH_OBJ_TEST
}
void func_after_test()
{
}
int main() {
func_after_test();
return 0;
}