gpt4 book ai didi

c - 存储函数指针时禁止 GCC 警告

转载 作者:行者123 更新时间:2023-12-04 05:27:15 25 4
gpt4 key购买 nike

我正在编写一个跨平台的 OpenGL 函数加载库。在 Windows 上,编译器(奇怪的是,VS 和 GCC)似乎可以将一种函数指针(来自 wglGetProcAddress 的返回类型是 void(*)())隐式转换为另一种类型的函数指针。

然而,Linux 上的 GCC 不是。 glXGetProcAddress将返回 void(*)() ,但它总是会发出警告。而且由于 OpenGL 确实有数千种这样的东西,所以它加起来就是一个完全无关紧要的巨大诊断结果。

有什么方法可以禁用此特定警告吗?要么带 #pragma或某种重新排列代码的方式,以便 GCC 关闭?我试了整个#pragma diagnostic ignore -Wblahblah ,但我找不到与我收到的警告相匹配的“blahblah”。

最佳答案

我很确定您应该使用提供的宏来获取正确的类型。例如,取自 gl3w OpenGL 扩展加载器(你必须运行 python 脚本才能让它生成这样的代码),它有如下几行:

gl3wBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)get_proc("glBindImageTexture");

那个怪 PFNGLBINDIMAGETEXTUREPROC中间是 glBindImageTexture的正确函数类型的宏函数(你可以看到它的名字实际上是 P ointer F unctio N GLBINDIMAGETEXTURE PROC )。

关于c - 存储函数指针时禁止 GCC 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com