初始化丢弃限定符... sdl警告

时间:2010-09-24 05:36:45

标签: c sdl

当我通过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;
}

有谁知道如何更改代码以便我可以绕过该警告?

2 个答案:

答案 0 :(得分:4)

documentation表示该函数返回const SDL_VideoInfo *,因此请将代码更改为:

const SDL_VideoInfo* info = SDL_GetVideoInfo();

如果没有constinfo可用于更改其指向的值,但很明显,您不能这样做。

答案 1 :(得分:1)

SDL_GetVideoInfo可以返回指向const SDL_VideoInfo的指针吗?


[2分钟后谷歌搜索]

我在网上找到的SDL_GetVideoInfo声明是:

const SDL_VideoInfo* SDL_GetVideoInfo(void);

确实它返回一个const指针,你转换为非const指针,因此警告。请注意,您不应该忽略它,因为当函数想要返回一个const指针时,它经常有充分的理由 - 通过指针修改返回的对象可能没有意义,甚至是有害的。