GCC警告隐式转换void *到另一个指针类型

时间:2011-08-19 11:40:34

标签: c gcc casting warnings void-pointers

正如标题所说,当我做这样的事情时,有没有办法迫使GCC警告我:

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

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

    // WARN HERE:
    do_something(b);
}

2 个答案:

答案 0 :(得分:7)

使用-Wc++-compat。来自GCC manual

  

-Wc ++ - compat(仅限C和Objective-C)

     

警告ISO C构造   在ISO C和ISO C ++的公共子集之外,例如,请求   用于从void *隐式转换为指向非void类型的指针。

答案 1 :(得分:1)

答案可能

的两个原因
  1. 这是合法的C.
  2. 在其他情况下会很烦人,例如

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