【发布时间】:2015-05-23 03:21:27
【问题描述】:
在过去的几年里,我在用 C 编程,我养成了一个习惯,将结构的 typedef 放在头文件中,并将其定义留在源文件中,这样其他人就可以使用我的文件而不让他们使用把事情搞砸了。
// header file
typedef struct s_example EXAMPLE
// source file
struct s_example {
// something
};
这样做有什么问题吗,我应该让其他人知道我对我的结构做了什么吗?
我只是问这个,因为我看到很多人在头文件中显示所有内容。
【问题讨论】:
-
如果他们处理的只是一个指针,一个不完整的类型就可以了。
-
另请注意,在 C++ 中,
typedef是不需要的,因为当您像在 C 中那样在源代码中引用裸类型时,您不必使用struct关键字。 -
如果用户看不到格式/字段,他们如何能够使用结构?并且一个结构不应该是 typedef'd.. 这样的 typedef'ing 只会模糊代码并使编译器名称空间混乱。建议:将结构格式放在头文件中(如果其他程序需要访问本地结构实例,可能还有一个extern语句。)
-
@user3629249 我总是
typedef和struct这样每次我声明一个或使用一个作为函数参数时,源代码就不会被struct这个词弄得乱七八糟。这是不好的做法吗? -
@WeatherVane:不,这不是坏习惯。我不知道 user3629249 从哪里得到这个想法。但我同意对将要使用它的程序员隐藏结构的布局是没有意义的。
标签: c++ c struct standards standards-compliance