typedef可见性

| 我有几个“ .c .h”文件。 在头文件(.h)中,我定义了2个typedef结构,我们将其称为TS1和TS2。 现在,TS1的一个成员的类型为TS2。 我希望只有TS1可见。 TS2应该被隐藏。 TS2仅对\“。c \”文件可见。 我该如何实现?     
已邀请:
我喜欢用“ -internal \”后缀命名私有头文件。例如,我有
foobar.c
    #include \"foobar-internal.h\"
    #include \"foobar.h\"
    /* functions using `struct TS1` and `struct TS2` */
foobar.h
    #ifndef H_FOOBAR_INCLUDED
    #define H_FOOBAR_INCLUDED
    struct TS1;
    #endif
foobar-internal.h
    #ifndef H_FOOBAR_INTERNAL_INCLUDED
    #define H_FOOBAR_INTERNAL_INCLUDED
    struct TS2 { int whatever; };
    struct TS1 { int whatever; struct TS2 internal; };
    #endif
使用函数的任何代码都包括更简单的
\"foobar.h\"
,并且可以使用指向
struct TS1
的指针。它不能直接使用“ 4”或“ 6”类型的对象。实际上,仅包含
\"foobar.h\"
,代码就不知道在任何地方都存在
struct TS2
类型,并且可以将其重新定义为自己的用途。
usercode.c
    #include \"foobar.h\"
    struct TS1 *x;
    x = newTS1();
    work(x);
    destroyTS1(x);
    
我同意Rumple。 相反,您可以做的是h12ѭ之后,.h中的
#define TS2 int
和.c文件顶部的
#undef TS2
。 虽然这不使用
typedef
。如果要在多个.c文件中将其“ 12”,也可以在.h文件的底部“ 14”。     
AFAIK,这是不可能的。但是对于TS1和TS2,您可以有2个不同的.h文件。     

要回复问题请先登录注册