我正在研究一些使用 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个字符的无符号字符数组吗? “_”有什么用?
提前谢谢您。
_
是变量的名称。也可以是unsigned char Whatever[32];
_
只是一个选择得很糟糕的变量名。 _
是出现在变量名称/标识符中任意位置的有效符号。所以这只是一个名字不好的 32 字节数组。
但请注意,以下划线开头的命名标识符是不好的做法。来自 C 标准 7.1.3:
- 以下划线和大写字母或另一个下划线开头的所有标识符 始终保留用于任何用途,除了那些在词法上相同的标识符之外 关键词。
- 所有以下划线开头的标识符始终保留用作文件的标识符 普通名称空间和标签名称空间的范围。