Без предупреждения шаблоны в C - PullRequest
0 голосов
/ 12 октября 2010

Переходя от C ++, я сейчас изучаю темное искусство C и разработал следующий код, чтобы заменить мою потребность в шаблонах.В нижнем примере я реализовал вашу структуру Node для различных видов сада таким образом, чтобы ее можно было использовать для хранения данных любого типа.Рассмотрим следующее ...

// vptr.c
#include <stdio.h>

struct Node
{  
    void* data;
    struct Node* next;
};

int main()
{  
    struct Node n0, n1;

    n0.next = &n1;
    n0.data = malloc(sizeof(int));

    *((int*) n0.data) = 3;

    printf("%d\n",  *((int*) n0.data));

    return 0;
}

Опять же, проблема заключается в компиляции этого кода warning free , а именно в использовании компилятора gcc, хотя мой wxDevCpp для Windows также дает мне некоторыепредупреждения, но гораздо менее суетливый об этом.Я виню в этом GUI.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

malloc объявлен в stdlib.h, который вы не включили. Поэтому, если вы добавите #include, предупреждение исчезнет.

Другое предупреждение касается //, что не является допустимым комментарием в C89. Чтобы убрать это предупреждение, используйте /* */ для комментариев или скажите gcc использовать C99.

2 голосов
/ 12 октября 2010

Для меня, просто добавив правильное включение для malloc (<stdlib.h>), вы получите предупреждение о компиляции кода без: gcc -std=c89 -Wall -Wextra -pedantic.

...