typedef 可见性
我有几个“.c .h”文件。 在头文件(.h)中,我定义了2个typedef struct,我们称它们为TS1和TS2。
现在,TS1 的一个成员的类型是 TS2。 我希望只有 TS1 可见。 TS2 应该被隐藏。 TS2 应该仅对“.c”文件可见。
我怎样才能实现这个目标?
I have a ".c .h" couple of files.
In the header file (.h), I define 2 typedef struct, let's call them TS1 and TS2.
Now, the type of one member of TS1 is TS2.
I'd like that only TS1 is visible. TS2 should be hidden.
TS2 should be only visible to the ".c" file.
How can I achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我喜欢用“-internal”后缀命名私有头文件。对于你的例子,我有
.
。
使用您的函数的任何代码,包括更简单的
“foobar.h”
,并且可以使用指向struct TS1
的指针。它不能直接使用 struct TS1 或 struct TS2 类型的对象。事实上,通过仅包含"foobar.h"
,代码并不知道任何地方都存在struct TS2
类型,并且可以根据自己的目的重新定义它。I like to name private header files with the '-internal' suffix. For your example, I'd have
.
.
Any code using your functions, includes the simpler
"foobar.h"
and can use pointers tostruct TS1
. It cannot directly use objects of eitherstruct TS1
orstruct TS2
type. In fact, by including just"foobar.h"
, the code has no idea there exists astruct TS2
type anywhere and can redefine it to its own purposes.我同意鲁普的观点。
您可以做的是,例如 .h 中的
#define TS2 int
和 .c 文件顶部#include
之后的#undef TS2
代码>.尽管这不使用
typedef
。如果您想在多个 .c 文件中#include
它,您也可以在 .h 文件底部#undef
将其添加。I agree with Rumple.
What you can do instead is e.g.
#define TS2 int
in the .h and#undef TS2
at the top of the .c file after the#include
.Though this doesn't use
typedef
. You can also#undef
it in the bottom of the .h file if you want to#include
it in multiple .c files.AFAIK,这是不可能的。但是您可以为 TS1 和 TS2 有 2 个不同的 .h 文件。
AFAIK, this is not possible. But you can have 2 different .h files for TS1 and TS2.