我从未在C,C ++工作过5到6年。 但现在我做了一个非常小的改变(下面解释)。 我试过阅读教程,但只是感到困惑。
下面我的struct包含2个属性。 我需要创建它的引用并将值传递给这两个属性。
定义struct的文件。
//List of includes
typedef struct dscvs {
UPD_TRC(trc_no);
UPD_STS(status);
}dscvs_i;
使用struct变量的文件 //这里我需要创建一个dscvs_i类型的变量,这样我就可以在UPD_TRC(trc_no)&内部输入值了。 UPD_STS(状态); //这就是我正在做的事情
dscvs_i *i_updsc;
i_updsc->trc_no = trcno;
但这是抛出错误“错误:表达式必须是可修改的左值”
请建议。
答案 0 :(得分:1)
即使它被编译(由于宏包裹结构中的成员似乎没有这样做),这个:
dscvs_i *i_updsc;
i_updsc->trc_no = trcno;
是无效代码。在分配内容之前,你不能修改指针i_updsc
指向的内容,即初始化指针指向你可以修改的有效内存块。
如果您希望使用它,则需要使用malloc()
分配动态内存:
i_updsc = malloc(sizeof *i_updsc);
然后在尝试修改之前检查分配是否已成功,:
if(i_updsc != NULL)
{
i_updsc->trc_no = trcno;
}