某些C包含文件使用以下约定:
typedef struct YOUSHALLNOTUSETHISNAME
{
// members
} USETHISNAME;
在这种情况下,我应该如何预先宣布USETHISNAME?打破惯例并说出
typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME;
问题是我无法控制定义结构的头。而且我不想包含定义结构的头部,因为在这种情况下它是一个真正的野兽:windows.h
注意:
此问题与Forward declare FILE *密切相关。
答案 0 :(得分:0)
typedef struct YOUSHALLNOTUSETHISNAME {
// some fields
} USETHISNAME;
#define YOUSHALLNOTUSETHISNAME %%%some@thing!bad$for*the^C%compiler
然后,YOUSHALLNOTUSETHISNAME
的大多数事件都会被拒绝,但顽皮的开发人员可能会在以后:
#undef YOUSHALLNOTUSETHISNAME
顺便说一句,如果您不想定义struct YOUSHALLNOTUSETHISNAME
的字段(应该由另一个标题提供),您可以
typedef struct YOUSHALLNOTUSETHISNAME USETHISNAME;
另外,您确定要避免#include <windows.h>
吗?也许你只需要预编译的头文件。有些编译器提供了这个功能。
但是,我认为这不仅仅是一个技术问题,而是一个社会问题。您文档应该不使用 YOUSHALLNOTUSETHISNAME