C typedef 声明中的下划线别名

问题描述 投票:0回答:1

pdfium 的公共标头通常包含这样的结构

typedef enum _FPDF_DUPLEXTYPE_ {
  DuplexUndefined = 0,
  Simplex,
  DuplexFlipShortEdge,
  DuplexFlipLongEdge
} FPDF_DUPLEXTYPE;

typedef struct _FS_MATRIX_ {
  float a;
  float b;
  float c;
  float d;
  float e;
  float f;
} FS_MATRIX;

typedef struct FPDF_BSTR_ {
  char* str;
  int len;
} FPDF_BSTR;

将此与例如

进行对比
typedef enum {
  FPDF_RENDERERTYPE_AGG = 0,
  FPDF_RENDERERTYPE_SKIA = 1,
} FPDF_RENDERER_TYPE;

其中省略下划线别名。

下划线别名的意义是什么,比如

_FPDF_DUPLEXTYPE_
? (注意:我不是 C 开发人员,只是阅读标题并试图理解为什么这样做。)

c enums typedef
1个回答
0
投票
  1. C 中带有
    _
    的标识符被保留,不得使用。
  2. 它们不是
    alisses
    ,而是标签。
  3. 所有大写标识通常用于宏观定义
  4. 它们用于结构声明。

示例:

typedef struct SomeStruct {
  float a;
  float b;
  float c;
  float d;
  float e;
  float f;
  struct FS_MATRIX *next;
} SomeStruct;
© www.soinside.com 2019 - 2024. All rights reserved.