Visual c++ MS Visual Studio 2019:如何在预处理后找到结构的实际定义?

Visual c++ MS Visual Studio 2019:如何在预处理后找到结构的实际定义?,visual-c++,macros,structure,c-preprocessor,Visual C++,Macros,Structure,C Preprocessor,Visual Studio生态系统不太熟悉(我的母语是Delphi),但是,由于我大量使用Ghostscript代码,我必须经常面对这样的结构定义(不需要破译,只是一个可怕的例子): 这个费劲的定义实际上相当于下面的定义(预处理器知道它!): 那么,有没有一种简单的方法(通过VS接口)可以在构建后(即让预处理器完成工作后)直接找到结构的实际定义,而无需有效地启动应用程序?如果不可能,那将是一个真正的耻辱——因为预处理器已经为我做了这件事 (查看预处理器的原始输出非常不舒服,因此对于包含数千个模块

Visual Studio生态系统不太熟悉(我的母语是Delphi),但是,由于我大量使用Ghostscript代码,我必须经常面对这样的结构定义(不需要破译,只是一个可怕的例子):

这个费劲的定义实际上相当于下面的定义(预处理器知道它!):

那么,有没有一种简单的方法(通过VS接口)可以在构建后(即让预处理器完成工作后)直接找到结构的实际定义,而无需有效地启动应用程序?如果不可能,那将是一个真正的耻辱——因为预处理器已经为我做了这件事


(查看预处理器的原始输出非常不舒服,因此对于包含数千个模块的大型项目(如Ghostscript)来说,这只是一个勉强可以接受的解决方案。)

查看预处理器的原始输出非常不舒服
我认为这意味着您正在寻找比
cl/p/Fi
或IDE中的“预处理到文件”选项更友好的东西。一个快速搜索发现了扩展名,即“添加到编辑器上下文菜单中的项目,用于检查C++的预处理器和代码生成器输出……”,虽然我没有任何第一手经验。但是,您的答案将是非常优秀的,但不幸的是,DevUtils不适合于MaGeScript项目,如GHESTScript。谢谢这是不幸的,尽管可能并不完全令人惊讶。
查看预处理器的原始输出是非常不舒服的
我认为这意味着您正在寻找比
cl/P/Fi
或IDE中的“预处理到文件”选项更友好的东西。一个快速搜索发现了扩展名,即“添加到编辑器上下文菜单中的项目,用于检查C++的预处理器和代码生成器输出……”,虽然我没有任何第一手经验。但是,您的答案将是非常优秀的,但不幸的是,DevUtils不适合于MaGeScript项目,如GHESTScript。谢谢这是不幸的,尽管可能并不完全令人惊讶。
#define gs_bitmap_common(data_type)                                         \
    data_type *     data;       /* pointer to the data */                   \
    int             raster;     /* increment between scanlines, bytes */    \
    gs_int_point    size;       /* width and height */                      \
    gs_bitmap_id    id      /* usually unused */

/* ... */

#define gs_tile_bitmap_common(data_type)                          \
    gs_bitmap_common(data_type);                                  \
    ushort      rep_width, rep_height   /* true size of tile */

/* ... */

#define gx_tile_bitmap_common(data_type) gs_tile_bitmap_common(data_type)

/* ... */

#define gx_strip_bitmap_common(data_type)\
        gx_tile_bitmap_common(data_type);\
        ushort rep_shift;\
        ushort shift;\
        int num_planes

/* ... */

typedef struct gx_strip_bitmap_s {
    gx_strip_bitmap_common(byte);
} gx_strip_bitmap; 
typedef struct gx_strip_bitmap_s {
        byte*           data;       /* pointer to the data */                   
        int             raster;     /* increment between scanlines, bytes */    
        gs_int_point    size;       /* width and height */                      
        gs_bitmap_id    id;     /* usually unused */
        ushort          rep_width, rep_height   /* true size of tile */
        ushort          rep_shift;
        ushort          shift;
        int             num_planes;
} gx_strip_bitmap;