синтаксическая ошибка в C - PullRequest
       28

синтаксическая ошибка в C

0 голосов
/ 22 декабря 2009

Я пытаюсь построить блок, в котором я получаю это сообщение об ошибке

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 ]

5 голосов
/ 22 декабря 2009

Да, вы ставите '*' перед чем-то, что не является указателем.

Вы бы сделали себе и всем одолжение, если бы разместили соответствующую строчку кода.

1 голос
/ 22 декабря 2009

Либо переменная 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, мы можем рассказать вам больше, но я думаю, что вы должны теперь сами разобраться в ошибке.

1 голос
/ 22 декабря 2009

Оператор * (косвенное обращение) разыменовывает указатель; то есть он преобразует значение указателя в значение l. Операндом оператора косвенности должен быть указатель на тип.

1 голос
/ 22 декабря 2009

Предположительно, у вас есть код примерно такой:

int x;

*x;    // apply indirection to non-poiner

Но невозможно сказать, не увидев фактический код, вызывающий сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...