请问define和typedef有啥区别?

pink_tulip 2005-12-17 10:50:58
好像它们的作用范围都只能在一个cpp文件里有效?

还有顺便问下typedef一般在什么场合使用?
...全文
372 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcz0918 2005-12-19
  • 打赏
  • 举报
回复
完全不一样,在c中define的用处很大,typedef不过定义类型而已
goodluckyxl 2005-12-18
  • 打赏
  • 举报
回复
cpp中 #include 了头文件没有
如果加了 把你代码贴出来看看
pink_tulip 2005-12-18
  • 打赏
  • 举报
回复
我在.h文件中声明了一个类,里面用了typedef定义别名。
可相应的.cpp文件中的类定义使用它时却说不认识这个别名。
这是怎么回事?
ErikChen1985 2005-12-18
  • 打赏
  • 举报
回复
也许您已经注意到#define 不是语句 不要在行末加分号,否则 会连分号一块置换。
yhbttfile 2005-12-18
  • 打赏
  • 举报
回复
"#define"是C语言的宏定义关键字。目前C++为了继承性保留了该关键字,但是一般建议在定义类型的别名时使用typedef。typedef一般用于定义类型的别名,与宏不一样,宏是全局可见的,而typedef是有名字空间的。
"#define"目前只有在C++用于避免重复定义(头文件中使用)。如:
#ifndef XXX
#define XXX

// 头文件的类型或者函数声明内容。

#endif
goodluckyxl 2005-12-18
  • 打赏
  • 举报
回复
typedef 声明一个类型定义别名 减少编程中遇到一些太长的命名的麻烦
#define宏定义
zhengguoshan 2005-12-18
  • 打赏
  • 举报
回复
>>#define跟typedef根本就是两种东西,基本没有可比性,#define是编译期替换,而typedef是>>声明。

>>typedef通常用在简化一个复杂的声明。
-----------------------------------------------------------------------------------
赞同
  • 打赏
  • 举报
回复
晕,你那么写能用吗?!
拿出来吧!
Bird_fro 2005-12-18
  • 打赏
  • 举报
回复
没联系吧
huangkou 2005-12-18
  • 打赏
  • 举报
回复
在用typedef声明后不能再往里面增加别的东西,而宏则可以用其他类型说明符对宏类型名进行扩展。
在连续的几个变量申明中,用typedef定义的类型能够保证声明中所有的类型变量为同一种类型,而宏定义的类型则无法保证。
pink_tulip 2005-12-18
  • 打赏
  • 举报
回复
拿到类外面来定义,如果程序很庞大,岂不是有可能与其他地方的类似定义冲突?
watermelontx 2005-12-18
  • 打赏
  • 举报
回复
格式不同,功能不同..
ddnlkd1204 2005-12-18
  • 打赏
  • 举报
回复
应该是作用域的问题,把typedef int INT;拿到类外面定义就可以了。
pink_tulip 2005-12-18
  • 打赏
  • 举报
回复
a.h
//////////
class a
{
public:
typedef int INT;
INT b();
};
/////////////


a.cpp
////////////
#include "a.h"
INT a::b()
{
return 0;
}

////////////////

a.cpp : error C2501: 'INT' : missing storage-class or type specifiers
pink_tulip 2005-12-18
  • 打赏
  • 举报
回复
a.h
//////////
class a
{
public:
typedef int INT;
INT b();
};
/////////////


a.cpp
////////////
#include "a.h"
INT a::b()
{
return 0;
}

////////////////

a.cpp : error C2501: 'INT' : missing storage-class or type specifiers
yanshine 2005-12-17
  • 打赏
  • 举报
回复
只要定义类型全用typedef就行了.
typedef太多的任务也做不了.
#define就是个替换,用好了很不错的.
pink_tulip 2005-12-17
  • 打赏
  • 举报
回复
比如什么时候用typedef比较好,什么时候用define比较好

还有,把那些很长的类型名,比如 xx::yy::zz之类的用typedef替换是不是个好习惯?
sankt 2005-12-17
  • 打赏
  • 举报
回复
几乎没有什么联系

#define跟typedef根本就是两种东西,基本没有可比性,#define是编译期替换,而typedef是声明。

typedef通常用在简化一个复杂的声明。

//=========
正解
pink_tulip 2005-12-17
  • 打赏
  • 举报
回复
我主要想问的不是背后的实现,而是使用上的区别。
megaboy 2005-12-17
  • 打赏
  • 举报
回复
#define跟typedef根本就是两种东西,基本没有可比性,#define是编译期替换,而typedef是声明。

typedef通常用在简化一个复杂的声明。
加载更多回复(1)

64,691

社区成员

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

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