作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在阅读了 GTK+ 库的一些源代码后,我遇到了一段我认为相当奇怪的代码:
typedef struct _GtkWidgetClass GtkWidgetClass;
...
struct _GtkWidgetClass
{
...
};
这段代码我不明白的是为什么它不是这样写的:
typedef struct
{
...
} GtkWidgetClass;
我觉得我错过了什么......
如果有人可以告诉我为什么以这种方式编写 GTK(或任何其他代码),我们将不胜感激。
提前致谢
最佳答案
从严格的编码角度来看,它没有任何意义。然而,在头文件中,它可以作为一种接口(interface)定义,其中列出了 GTK+ 的“公共(public)”接口(interface)。顺便说一句,这种风格遵循其他 GNU 库。
无论如何,我认为我们可以有把握地说,对于现代 C 编译器和工具来说,它并没有多大意义,但 GTK+ 并不是一个真正的新库,因此它可以包含一些陈旧的编码约定。
关于c - C 中的 _StructName 约定有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916002/
在阅读了 GTK+ 库的一些源代码后,我遇到了一段我认为相当奇怪的代码: typedef struct _GtkWidgetClass GtkWidgetClass; ... struct _GtkW
我在构建我的程序时遇到了这个“已声明”的编译错误。我知道这有时可能是由于两次包含相同的头文件引起的。但是,我正在使用 ifndef 预处理器指令来避免这种情况。似乎这个结构必须在我的构建路径中其他地方
我是一名优秀的程序员,十分优秀!