GCC предупреждение о неявном приведении void * к другому типу указателя - PullRequest
3 голосов
/ 19 августа 2011

Как видно из названия, есть ли способ заставить GCC предупредить меня, когда я сделаю что-то вроде этого:

void do_something(int* ptr)
{
    // do something
}

int main()
{
    int a = 123;
    void* b = &a;

    // WARN HERE:
    do_something(b);
}

Ответы [ 2 ]

7 голосов
/ 19 августа 2011

Используйте -Wc++-compat.Из руководства GCC :

-Wc ++ - compat (только C и Objective-C)

Предупреждать о конструкциях ISO C, которые находятся за пределами общего подмножестваISO C и ISO C ++, например, запрос на неявное преобразование из void * в указатель на не void тип.

1 голос
/ 19 августа 2011

Две причины, почему ответ, вероятно, нет :

  1. Это законно C.
  2. Это было бы довольно раздражающим в других контекстахнапример,

    int *array = malloc(5 * sizeof(*array)).

...