Я хочу изменить свой код, используя Coccinelle скрипт:вопросы Pointer в Coccinelle
// Before modification
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int *p;
*p=i;
return 0;
}
Ожидаемый результат:
// After modification
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int *p;
if (p!=NULL)
*p=i;
return 0;
}
Мой Coccinelle сценарий выглядит следующим образом:
@[email protected]
type T;
T* ptr;
expression E;
@@
-*ptr= E;
+ if (ptr!=NULL)
+ptr=E;
Мой сценарий неверен, потому что оператор «звезда» используется Coccinelle. Может ли кто-нибудь помочь мне узнать, для чего полезен оператор «звезда», потому что я немного смущен этим оператором. Как я могу изменить свой скрипт, чтобы получить ожидаемый результат?
Код C, который вы представили, является лишь примером? Поскольку вы читаете неинициализированные переменные. – this
Ваш пример: программа C сбой (если вам повезет). Вы пытаетесь записать в нераспределенную память. –
@ FilipeGonçalves: И измененная версия читает неинициализированную переменную. – EOF