Predeclare标记结构
某些C包含文件使用以下约定:Predeclare标记结构,c,struct,typedef,C,Struct,Typedef,某些C包含文件使用以下约定: typedef struct YOUSHALLNOTUSETHISNAME { // members } USETHISNAME; 在这种情况下,我应该如何使用predeclare这个名称?打破惯例说 typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME; 问题是我无法控制定义结构的头。我不想包含定义结构的标题,因为在本例中它是一个真正的beast:windows.h 注: 这个问题与以下方面密切相
typedef struct YOUSHALLNOTUSETHISNAME
{
// members
} USETHISNAME;
在这种情况下,我应该如何使用predeclare这个名称?打破惯例说
typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME;
问题是我无法控制定义结构的头。我不想包含定义结构的标题,因为在本例中它是一个真正的beast:windows.h
注:
这个问题与以下方面密切相关。改进:
然后,大多数进一步出现的您不能使用此名称将被拒绝,但淘气的开发人员稍后可能会:
#undef YOUSHALLNOTUSETHISNAME
顺便说一句,如果您不想定义struct的字段,您不能使用thisname
(它应该由另一个标题提供),您可以
typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME;
另外,您确定要避免#包括?也许您只需要预编译头。有些编译器提供了这一功能
然而,我认为这不仅仅是一个技术问题,更是一个社会问题。您应该记录人们不应该使用您不应该使用此名称
,这似乎很好:您只使用了一次不被使用的名称,并且在(大概)相同的头文件中,因此它不会在头文件之外的任何地方使用。真正的目的是后者。如果我是标题的作者,这个答案适用。但我不是,我在使用内部名称时犯了一个错误。
typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME;