2010-09-24 4 views
2

Lorsque j'exécute ce bit de code via GCC, j'obtiens cet avertissement sur la ligne où je place les informations dans SDL_GetVideoInfo().initialisation élimine les qualificatifs ... sdl warning

avertissement: initialisation défausse qualifiés de pointeur type de cible

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; 
} 

Est-ce que quelqu'un sait comment je peux changer le code que je peux contourner cet avertissement?

Répondre

1

Est-ce que SDL_GetVideoInfo pouvait renvoyer un pointeur vers un const SDL_VideoInfo?


[2 minutes et une recherche google plus tard]

La déclaration de SDL_GetVideoInfo je l'ai trouvé en ligne est:

const SDL_VideoInfo* SDL_GetVideoInfo(void); 

En effet, il renvoie un pointeur const que vous convertir à un non -const pointeur, d'où l'avertissement. Notez que vous ne devriez pas l'ignorer, puisque lorsque la fonction veut renvoyer un pointeur const, elle a souvent une bonne raison de le faire - cela n'a probablement aucun sens, ou est même nuisible, de modifier l'objet retourné à travers le pointeur .

4

Le documentation dit que la fonction retourne une const SDL_VideoInfo *, donc changer votre code:

const SDL_VideoInfo* info = SDL_GetVideoInfo(); 

Sans const, info pourrait être utilisé pour modifier la valeur pointée par, mais de toute évidence, vous pouvez » t fais ça.

Questions connexes