Ошибка ожидается) при передаче указателя члена структуры в функцию - PullRequest
0 голосов
/ 23 января 2019

Я новичок в C. В моей программе есть структура и функция.Я пытаюсь передать указатель, который присутствует в структуре, в качестве аргумента в моей функции.Но это показывает ошибку «Ожидается)» в точке оператора.Это сбивает с толку, потому что другие аргументы моей функции также взяты из структуры, но эта ошибка не видна в них.

Я попытался изменить тип возвращаемого значения функции для всех типов и до сих пор ничего.

struct signal
{
bool *input;
int previousop;
int n;
}s; //my structure
void noiseremove(bool *input, int n, int count1, int count0, bool 
previousop)//function i declared and defined before main function
{//my function here}
void main()
{
void noiseremove(bool *s.input , int s.n, int s.count1, int s.count0, bool 
s.previousop); //this is where i call the function and facing an error at 
*s.input 
}

Я не уверен, где я ошибаюсь или синтаксис неправильный.Я ожидаю, что функция примет параметры, но это не так.

Ответы [ 2 ]

0 голосов
/ 23 января 2019
struct signal
{
    bool *input, previousop;
    int n, count1, count0;
} s; //my structure

void noiseremove(bool *input, int n, int count1, int count0, bool previousop) //function i declared and defined before main function
{
    // my function here
}
void main()
{
    // this should compile but s has not been initialized
    noiseremove(s.input , s.n, s.count1, s.count0, s.previousop);
    // not sure what you were going for here
    //*s.input 
}
0 голосов
/ 23 января 2019

Наличие функций внутри другой функции невозможно в C ...

Итак, ваш код должен выглядеть примерно так:

struct signal
{
    bool *input, previousop;
    int n, count0, count1;
} s;

void noiseremove(bool *input, int n, int count1, int count0, bool previousop)
{
    /* Try using multi-line comments since single-line comments can comment out the end
       braces as well...*/
}

void main()
{
    /* Initialize the structure before accessing any of its variables, or it will lead
       to undefined behavior! */
    s = {0};
    /* Don't declare the identifiers again... It is 'syntax error' and 
       your calling convention doesn't in the least look like a calling 
       convention but more like a function declaration with invalid identifiers
       for the parameters... */
    noiseremove(s.input , s.n, s.count1, s.count0, s.previousop);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...