我已经有5-6年没有在C,C++工作过了。但现在我要做一个很小的改变(解释如下)。我试着阅读教程,但只是感到困惑。
下面我有一个包含2个属性的结构。我需要创建它的引用并将值传递给这两个属性。
在其中定义结构的文件。
//List of includes
typedef struct dscvs {
UPD_TRC(trc_no);
UPD_STS(status);
}dscvs_i;使用结构变量的文件//这里我需要创建一个dscvs_i类型的变量,这样我就可以在UPD_TRC(trc_no)和UPD_STS(Status)中提供值;//这就是我正在做的事情
dscvs_i *i_updsc;
i_updsc->trc_no = trcno;但这是抛出错误“错误:表达式必须是一个可修改的左值”
请提个建议。
发布于 2013-02-04 16:57:07
即使它编译了(由于宏将成员包装在结构中,它似乎没有编译),这是:
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;
}https://stackoverflow.com/questions/14683102
复制相似问题