C中的语法错误

时间:2009-12-22 13:32:31

标签: c unix

我正在尝试构建一个块,我收到此错误消息

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));

4 个答案:

答案 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_fWORK_migration_ind_f的声明,我们可以告诉您更多信息,但我认为您应该能够自行解决错误。