我在哪里可以找到 'SDL_Window' 的定义

Where can I find the definition of 'SDL_Window'

我刚刚在 Linux 开始学习 SDL2。我正在阅读 LazyFoo 的第一个教程,我看到有代码:

//The window we'll be rendering to 
SDL_Window* window = NULL;

在哪里可以找到 SDL_Window 的定义以便阅读它?

这个结构没有暴露给用户端; SDL_video.h 文件包含它的前向声明:

typedef struct SDL_Window SDL_Window;

前向声明意味着您只能将其用作指针类型,因为实际的数据布局对您是隐藏的。

实际类型 struct SDL_Window 当前在 src/video/SDL_sysvideo.h 中声明(在 SDL Source Code: 中,而不是在 'Development Libraries:' 中)为:

struct SDL_Window
{
    const void *magic;
    Uint32 id;
    char *title;
    SDL_Surface *icon;
    int x, y;
    int w, h;
    int min_w, min_h;
    int max_w, max_h;
    Uint32 flags;
    Uint32 last_fullscreen_flags;

    /* Stored position and size for windowed mode */
    SDL_Rect windowed;

    SDL_DisplayMode fullscreen_mode;

    float brightness;
    Uint16 *gamma;
    Uint16 *saved_gamma;        /* (just offset into gamma) */

    SDL_Surface *surface;
    SDL_bool surface_valid;

    SDL_bool is_hiding;
    SDL_bool is_destroying;

    SDL_WindowShaper *shaper;

    SDL_HitTest hit_test;
    void *hit_test_data;

    SDL_WindowUserData *data;

    void *driverdata;

    SDL_Window *prev;
    SDL_Window *next;
};

但是,如果您不是 developing/debugging SDL,则此信息几乎没有用,而且最重要的是,可能会在未来的任何版本中更改。同样最有趣的部分 - 指向 SDL_WindowUserData 的指针 - 是特定于平台的,并且在不同的操作系统和 SDL 视频驱动程序之间有所不同。

您应该改用 SDL2 video API