Преобразование, подобное приведенному ниже, работает для func_1(&something->field)
, когда что-то является foo_t
, но не учитывает случаи, когда v само является полем, таким как func_1(&something->v->field)
@@
typedef foo_t;
foo_t *v;
@@
- func_1(&v->field)
+ func_2(v)
С другой стороныстороны, если я использую выражение, подобное этому:
@@
expression v;
@@
- func_1(&v->field)
+ func_2(v)
Это работает, но слишком активно и может соответствовать случаям, когда тип не foo_t
, просто потому, что какой-то другой тип имеет такое же имя поля.
Есть ли способ получить совпадение для выражений, но ограничить тип выражения foo_t
?