有关一个C++语言条件编译疑惑的有关问题,大家帮帮忙

有关一个C++语言条件编译疑惑的问题,大家帮帮忙
因为自己的项目源码文件头文件很多有些结构体或数据类型重定义了,所以我就用如下方式想要解决问题,但是这似乎不行

#if   !DWORD64
      typedef   __int64   DWORD64,*PDWORD64;
#endif

如果这个条件编译之前已经有  typedef   __int64   DWORD64,*PDWORD64;   那么就会产生重定义而不能编译

但是如果之前没有  typedef   __int64   DWORD64,*PDWORD64;   那么后面的代码就会产生没有定义 DWORD64 而不能编译

对于我想判断一下某个 数据类型 或 数据结构 以及 枚举 或 共用体 类型在之前是否以及被定义过,这样应该如何进行条件编译。

------解决方案--------------------
把这两个struct用相同的宏定义包围上。
比如。


#ifndef TEST1_H
#define TEST1_H

typedef   struct   _TTTTTT_
{
        long  a;
        long  b;
}TTTTTT,*PTTTTTT;

#endif

------解决方案--------------------
判断类型是否定义,用#ifdef, #ifndef
------解决方案--------------------
是需要用条件编译保护宏来放置头文件多次包含的。