我正在尝试构建一个块,我收到此错误消息
pprbc_CONTENT_icverification_act.c", line 99.2: 1506-018 (S) Operand of indirection operator must be a pointer expression
任何人都可以解释这意味着什么?
以下代码:
*(WORK_migration_ind_f) =
*(migration_status_in_MI9_CIRCLE_INFO(WORK_source_circle_f));
答案 0 :(得分:5)
是的,你在一个不是指针的东西前放了一个'*'。
如果您发布了涉及的代码行,那么您将做自己和每个人的帮助。
答案 1 :(得分:1)
大概你有这样的代码:
int x;
*x; // apply indirection to non-poiner
但是如果没有看到导致错误消息的实际代码,就无法说出来。
答案 2 :(得分:1)
*
(间接)运算符取消引用指针;也就是说,它将指针值转换为l值。间接运算符的操作数必须是指向类型的指针。
答案 3 :(得分:1)
变量WORK_migration_ind_f
或函数migration_status_in_MI9_CIRCLE_INFO
的返回类型(或两者)都不是指针类型。您只能取消引用指针。
如果您有以下代码:
int *pi;
int i;
int f(void);
int *pf(void);
然后,以下“有道理”:
*pi /* is of type int */
*pf() /* is of type int */
以下内容不是:
*i /* can't dereference a non-pointer */
*f() /* can't dereference a non-pointer */
如果您向我们展示WORK_migration_ind_f
和WORK_migration_ind_f
的声明,我们可以告诉您更多信息,但我认为您应该能够自行解决错误。