Какой правильный тип использовать для объявления метавариабельной переменной, которая может соответствовать либо переменным, либо членам в структуре?
Возьмем, к примеру, следующий пример исходного кода:
#include <stdio.h>
#include <stdlib.h>
struct some_struct {
int i;
char *s;
};
void test(void)
{
struct some_struct *ptr;
char *s;
s = malloc(100);
ptr = malloc(sizeof(struct some_struct));
ptr->s = malloc(100);
puts("done");
}
Со следующим семантическим патчем :
@@
identifier ptr;
//idexpression ptr;
//expression ptr;
expression E;
@@
ptr = malloc(E);
+if (ptr == NULL)
+ return;
распределение ptr->s
не сопоставляется, если не используется expression ptr
. Использовать expression
для этого мне кажется слишком широко. Это правильно и единственный способ сделать это?