我无法理解这个例子中如何使用 unsigned char _ [32]

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

我正在研究一些使用 Zeromq 的示例,并开始阅读 Zeromq.h 文件以了解更多详细信息。

我对定义 zmq_msg_t 的行感到困惑:

https://travlr.github.io/libzmq/zmq_8h_source.html#l00129

typedef struct {unsigned char _ [32];} zmq_msg_t;

例如,您可以像这样初始化缓冲区:

zmq_msg_t buffer = {0};

我的问题可能是关于我不太明白的编译器的东西。为什么要定义这样的结构:

typedef struct {unsigned char _ [32];} zmq_msg_t;

这是一个32个字符的无符号字符数组吗? “_”有什么用?

提前谢谢您。

c zeromq typedef
2个回答
0
投票

_
是变量的名称。也可以是
unsigned char Whatever[32];


0
投票

_
只是一个选择得很糟糕的变量名。
_
是出现在变量名称/标识符中任意位置的有效符号。所以这只是一个名字不好的 32 字节数组。

但请注意,以下划线开头的命名标识符是不好的做法。来自 C 标准 7.1.3:

  • 以下划线和大写字母或另一个下划线开头的所有标识符 始终保留用于任何用途,除了那些在词法上相同的标识符之外 关键词。
  • 所有以下划线开头的标识符始终保留用作文件的标识符 普通名称空间和标签名称空间的范围。
© www.soinside.com 2019 - 2024. All rights reserved.