C结构定义标准
C struct definition standard
过去几年我用C语言编程,我养成了一个习惯,把结构的typedef放在头文件中,并把它的定义留在源文件中,这样其他人就可以使用我的文件,而不会让它们把事情搞砸。
// header file
typedef struct s_example EXAMPLE
// source file
struct s_example {
// something
};
这样做有什么不对吗?我应该让别人知道我对我的结构做了什么吗?
我之所以这么问,是因为我看到很多人在头文件中显示所有内容。
只有头文件中的声明的缺点是,所有其他不包括struct
定义的源文件都无法实例化该struct
的实例,而只能实例化指向它的指针。这是因为,对于其他源文件,struct
是不完整的类型。如果这对您的应用程序来说是可以的,那么只在头中声明就没有什么问题。
相关文章:
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 标准是否严格定义了该程序应该如何编译?
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 根据C++标准的定义实现"is_similar"类型特征
- 使用宏编译时使用用户定义的数学函数,或者仅使用 c++ 中标准数学库中的函数
- 标准::原子中的自定义类型
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 如何将来自 Boost.Python 的map_indexing_suite与自定义而不是标准对象一起使用?
- 如何确定以浮点数、双精度位数为单位的有效宽度:是否有标准定义?
- C++冲突声明的标准定义
- 在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?
- 转换 int -> 无符号长 长 是否由标准定义
- 为什么 std::string 没有标准定义的文字后缀?
- 该术语是否"method"由C++标准定义?
- 标准定义的 std::array 的大小
- 为什么默认情况下全局命名空间中没有 C++14 个标准定义的文本?
- c++14 中是否有 __cplusplus 的标准定义
- c++:多行字符串常量的行尾有标准定义吗?
- "lock-free"的含义是否由C++标准定义?
- std::wstring 的标准定义字节序是什么?