【问题标题】:initialization discards qualifiers... sdl warning初始化丢弃限定符... sdl 警告
【发布时间】:2010-09-24 05:36:44
【问题描述】:

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

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

【问题讨论】:

    标签: c sdl


    【解决方案1】:

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

    const SDL_VideoInfo* info = SDL_GetVideoInfo();
    

    如果没有constinfo 可以用来改变它所指向的值,但显然你不能这样做。

    【讨论】:

      【解决方案2】:

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


      [2 分钟后谷歌搜索]

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

      const SDL_VideoInfo* SDL_GetVideoInfo(void);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        相关资源
        最近更新 更多