为什么函数中的L*new报错,后面的p->next=new也不行?

图片说明

图片说明
为什么VS2019上报错?

#include"1.h"
typedef struct slist

{
int id;
struct slist* next;
}L;
//创建一个节点

L* create_node(int data)
{
//给每个节点分配结构体一样的空间大小
L* p = (L*)malloc(sizeof(L));
if (NULL == p)
{
printf("malloc error!\n");
return NULL;
}
//由于结构体在未初始化的时候一样是脏数据,所以要清
memset(p, 0, sizeof(L));
//初始化第一个节点
p->id = data;
//将节点的后继指针设置为NULL
p->next = NULL;

}

//链表的尾插
void tail_insert(L* pH, L*new)
{

//获取当前的位置 
L* p = pH;
//如果当前位置的下一个节点不为空 
while (NULL != p->next)

{
    //移动到下一个节点 
    p = p->next;
}
//如果跳出以上循环,所以已经到了NULL的这个位置
//此时直接把新插入的节点赋值给NULL这个位置 
p->next =new;

}

new是C++关键字,换一个名字。