请帮忙解释一下这个宏定义是什么意思!!!

linqiu6 2002-12-18 08:45:45
#ifdef __cplusplus (这个__cplusplus起什么作用)
extern "C"{
#endif

#ifdef _WIN32
typedef _int64 dpl_int64_t;(这个是定义一个有符号的64位整数吗)
#else
typedef long long dpl_int64_t;(这个是定义一个无符号的64位整数吗)
#endif

#ifdef __cplusplus
}
#endif
...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luixui 2002-12-18
  • 打赏
  • 举报
回复
windcsn 2002-12-18
  • 打赏
  • 举报
回复
C++编译器有VC,BCB等
这段代码经常出现在需要可移植的文件中,比如又在C编译器又在C++编译器,有要在WINDOWS下编译又要在UNIX下编译。
windcsn 2002-12-18
  • 打赏
  • 举报
回复
#ifdef __cplusplus //如果是C++编译器的话程序中将包含exern "C"这句花,extern "C"{ //否则,就当不存在
#endif

#ifdef _WIN32 //如果是win32的环境下可以用_int64类型
typedef _int64 //否则用两个longlong 类形
#else
typedef long long
#endif

#ifdef __cplusplus
}//对应上面的extern "C"{组成extern "C"{}
#endif
linqiu6 2002-12-18
  • 打赏
  • 举报
回复
对于typedef long long dpl_int64_t是定义一个无符号的64位整数吗?
zhangyan_qd 2002-12-18
  • 打赏
  • 举报
回复
#ifdef _WIN32
typedef _int64 dpl_int64_t;(这个是定义一个有符号的64位整数吗)
#else
typedef long long dpl_int64_t;(这个是定义一个无符号的64位整数吗)
#endif

这是类型替换,不是定义变量。意思是:如果已经定义了_WIN32这个宏(即已经包含了WIN32编程需要的头文件,_int64就已经有定义了),那么把dpl_int64_t定义成_int64。以后在程序里写
dpl_int64_t aVar;
就相当于
_int64 aVar;
反之,如果没有定义过_WIN32这个宏,那么不能保证_int64这个类型有定义,就用C语言的原始类型定义dpl_int64_t的类型。
这是增加系统间兼容性的做法。那个__cplusplus也是类似的作用吧,可惜我不太了解,这似乎是个嵌入系统的头文件?
wengj 2002-12-18
  • 打赏
  • 举报
回复
#ifdef #else #endif 是给C C++编译器用的,表示选择编译
__cplusplus,指示如果定义了C++那么做...

typedef是重定义类型,以给软件工程时助记
如HWND,一看就知道是什么



69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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