当我通过GCC运行这段代码时,我在我将信息设置为SDL_GetVideoInfo()的行上收到此警告。
警告:初始化会丢弃指针目标类型的限定符
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_VideoInfo* info = SDL_GetVideoInfo();
int SCREEN_WIDTH = info->current_w;
int SCREEN_HEIGHT = info->current_h;
printf("hardware acceleration? %s\n", info->hw_available == 1 ? "yes" : "no");
printf("memory available in kilobytes: %d\n", info->video_mem);
SDL_Quit();
return 0;
}
有谁知道如何更改代码以便我可以绕过该警告?
答案 0 :(得分:4)
documentation表示该函数返回const SDL_VideoInfo *
,因此请将代码更改为:
const SDL_VideoInfo* info = SDL_GetVideoInfo();
如果没有const
,info
可用于更改其指向的值,但很明显,您不能这样做。
答案 1 :(得分:1)
SDL_GetVideoInfo
可以返回指向const SDL_VideoInfo
的指针吗?
[2分钟后谷歌搜索]
我在网上找到的SDL_GetVideoInfo
声明是:
const SDL_VideoInfo* SDL_GetVideoInfo(void);
确实它返回一个const指针,你转换为非const指针,因此警告。请注意,您不应该忽略它,因为当函数想要返回一个const指针时,它经常有充分的理由 - 通过指针修改返回的对象可能没有意义,甚至是有害的。