точки как параметры функции C - PullRequest
1 голос
/ 16 августа 2010

это, вероятно, простое решение. Я не настолько знаком с C, просто пытаюсь перенести мои назначения структуры данных java на C.

это ошибка, которую я получаю:

test.c: 4: ошибка: ожидается ')' до '*' токена

test.c: 11: ошибка: ожидается ')' до '*' токена

#include <stdio.h>
#include <stdlib.h>

void to_screen(NODE *cur){
    while(cur->next != NULL){
        printf("%d\n", cur->data);
        cur = cur->next;
    }
}

void add_first(NODE *head, int data){
    NODE *cur;
    int i;

    for(i=0; i<10; i++){
        cur = malloc(sizeof(NODE));
        cur->data = data;
        cur->next = (*head).next;

        head->next = cur;
    }
}

typedef struct node{
    int data;
    struct element *next;
}NODE;


int main(){
    int i;
    NODE *head;

    for(i=0; i<10; i++){
        add_first(head, i);
    }

    to_screen(head);
}

Ответы [ 3 ]

4 голосов
/ 16 августа 2010

Вам нужно переместить определение вашей структуры выше функции to_screen. Компилятор говорит, что он не знает, что такое NODE.

1 голос
/ 16 августа 2010

Вам необходимо определить NODE перед его использованием. Переместите определение наверх.

0 голосов
/ 16 августа 2010

Вам нужно переместить этот блок наверх, как рекомендуют 2 других ответа.

typedef struct node{
    int data;
    struct element *next;
}NODE;

Вы можете спросить причину.Причина в том, что спецификация языка C не похожа на Java.Так что это виды компиляции сверху вниз.Таким образом, если он увидит что-то неопределенное, он будет искать определение выше этой точки, а если он увидит определение, он его получит.Это не выглядит ниже строки кода

...