как дать struct * в качестве аргумента функции - PullRequest
0 голосов
/ 05 января 2019

Я хочу передать alloc в качестве аргумента, но не знаю как, кто-нибудь может мне помочь?

void parameter(unsigned int argnum, struct resistor* alloc)
{
/*...*/
}

struct resistort
{
  const double E6[6];
  double E12[12];
  const double E24[24];
  char e[3];
  double value;
  double log10val;
  double val;
  double serielval[2];
  double reset;
}rv;

int main(int argc, char *argv[])
{
  struct resistor *alloc = NULL;
  alloc = (struct resistor *)malloc(sizeof(struct resistor));

  parameter(argc, alloc);
}

в параметре я хочу освободить (выделить)

Я надеялся, что это будет работать следующим образом:

void parameter(unsigned int argnum, struct resistor* alloc);

но тогда я получаю это

warning: passing argument 2 of 'parameter' from incompatible pointer type [-Wincompatible-pointer-types]|
note: expected 'struct resistor *' but argument is of type 'struct resistor *'
error: conflicting types for 'parameter'

1 Ответ

0 голосов
/ 05 января 2019

Вы получаете предупреждение incompatible pointer type, потому что вы используете struct resistor до объявления:

void parameter(unsigned int argnum, struct resistor* alloc)
                                    ^^^^^^^^^^^^^^^

В вашей программе объявление struct resistor идет после parameter() функции.
Вы можете решить эту проблему, переместив объявление struct resistor перед функцией parameter() или просто сделав предварительное объявление функции struct resistor перед parameter(), например:

struct resistor; //forward declaration 

void parameter(unsigned int argnum, struct resistor* alloc)
{
/*...*/
}

struct resistor
{
    const double E6[6];
    double E12[12];
    const double E24[24];
    char e[3];
    double value;
    double log10val;
    double val;
    double serielval[2];
    double reset;
}rv;

int main(int argc, char *argv[])
{
    struct resistor *alloc = NULL;
    alloc = (struct resistor *)malloc(sizeof(struct resistor));

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