GCC 关于将 void* 隐式转换为另一个指针类型的警告

发布于 2024-11-30 22:25:51 字数 213 浏览 1 评论 0原文

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

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

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

    // WARN HERE:
    do_something(b);
}

As the title says, is there a way to force GCC to warn me when I do something like this:

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

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

    // WARN HERE:
    do_something(b);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心舞飞扬 2024-12-07 22:25:51

使用-Wc++-compat。来自 GCC 手册

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

警告 ISO C 结构
不属于 ISO C 和 ISO C++ 的公共子集,例如 request
用于从 void * 到指向非 void 类型的指针的隐式转换。

Use -Wc++-compat. From the GCC manual:

-Wc++-compat (C and Objective-C only)

Warn about ISO C constructs that
are outside of the common subset of ISO C and ISO C++, e.g. request
for implicit conversion from void * to a pointer to non-void type.

浪荡不羁 2024-12-07 22:25:51

答案可能是的两个原因:

  1. 这是合法的 C。
  2. 在其他情况下会非常烦人,例如

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

Two reasons why the answer is probably no:

  1. This is legal C.
  2. It would be pretty annoying in other contexts, e.g.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文