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

a294447011294447011 2014-05-24 07:34:04
因为自己的项目源码文件头文件很多有些结构体或数据类型重定义了,所以我就用如下方式想要解决问题,但是这似乎不行

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

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

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

对于我想判断一下某个 数据类型 或 数据结构 以及 枚举 或 共用体 类型在之前是否以及被定义过,这样应该如何进行条件编译。
...全文
229 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
IsItNothing 2014-05-29
  • 打赏
  • 举报
回复
是需要用条件编译保护宏来放置头文件多次包含的。
赵4老师 2014-05-29
  • 打赏
  • 举报
回复
#if !DWORD64 和 #ifndef DWORD64 不是一回事!
  • 打赏
  • 举报
回复
引用 7 楼 movsd 的回复:
判断类型是否定义,用#ifdef, #ifndef
#ifdef, #ifndef 只对 #define 宏进行条件编译,似乎不是对 typedef struct .... 进行条件编译。
  • 打赏
  • 举报
回复
引用 4 楼 LinuxTiger 的回复:
把这两个struct用相同的宏定义包围上。 比如。

#ifndef TEST1_H
#define TEST1_H

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

#endif
这个办法可以解决问题,倒是我的意思是需要用条件编译。
movsd 2014-05-25
  • 打赏
  • 举报
回复
判断类型是否定义,用#ifdef, #ifndef
unituniverse2 2014-05-25
  • 打赏
  • 举报
回复
引用 2 楼 tujiaw 的回复:
用namespace吧
++
点不亮的黑色 2014-05-24
  • 打赏
  • 举报
回复
引用 2 楼 tujiaw 的回复:
用namespace吧
+1
对象 2014-05-24
  • 打赏
  • 举报
回复
把这两个struct用相同的宏定义包围上。 比如。

#ifndef TEST1_H
#define TEST1_H

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

#endif
  • 打赏
  • 举报
回复
比如 在 Test1.h 文件里我已经有: typedef struct _TTTTTT_ { long a; long b; }TTTTTT,*PTTTTTT; 然而在 Test2.h 文件里 #include "Test1.h" #if !TTTTTT //如果我这里无法确定之前 struct _TTTTTT_ 是否已经被定义,这里如何避免重定义 struct _TTTTTT_ //我用 #if 条件编译并不能解决问题 typedef struct _TTTTTT_ { long a; long b; }TTTTTT,*PTTTTTT; #endif
ningto.com 2014-05-24
  • 打赏
  • 举报
回复
用namespace吧
对象 2014-05-24
  • 打赏
  • 举报
回复
不知所云,是想知道typedef的别名有没有重复?

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧