存储函数指针时抑制GCC警告

时间:2012-10-24 17:37:40

标签: c gcc compiler-warnings

我正在编写一个跨平台的OpenGL函数加载库。在Windows上,编译器(奇怪的是,VS GCC)看起来很好,隐式转换一种函数指针(返回类型从wglGetProcAddressvoid(*)())到另一种函数指针。

Linux 上的GCC然而不是。 glXGetProcAddress会返回void(*)(),但会始终发出警告。而且由于OpenGL实际上有成千上万的这些东西,因此它增加了一个完全不相关的巨大诊断喷射。

是否有某种方法可以禁用此特定警告?使用#pragma或某种方式重新排列代码以便GCC关闭?我尝试了整个#pragma diagnostic ignore -Wblahblah,但我找不到与我所得到的警告相符的“blahblah”。

1 个答案:

答案 0 :(得分:3)

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

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

中间奇怪的PFNGLBINDIMAGETEXTUREPROCglBindImageTexture函数的正确函数类型的宏(你可以看到它的名字实际是P ointer F unctio { {1}} N GLBINDIMAGETEXTURE)。