问个typedef的问题

youdang45 2009-10-24 11:45:23
typedef struct ST
{
long a;
int b;
char c[2];
}NEW;


typedef struct
{
long a;
int b;
char c[2];
}NEW;


这两种写法有什么区别么?
如果没区别,第一种存在的意义是什么?

Thanks!
...全文
115 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kouwenlong 2009-10-24
  • 打赏
  • 举报
回复
struct ST
{
long a;
int b;
char c[2];
};
typedef struct ST NEW;
youdang45 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soliddream66 的回复:]
引用 5 楼 youdang45 的回复:
试了一下,呵呵,对于C++是没区别的,对于C是有区别的
因为C中声明struct的一个变量时,必须要有struct关键字
而C++中是不需要的
所以C++中可以声明变量NEW x; 或者 ST x;
而C中只可以 NEW x; 不可以 ST x;

我觉得在C中这么写的主要目的也就在于struct ST捆绑到一起变为一个词
所以C++中这点用的意义就不是很大


C的语法了,C++没必要用typedef

楼主所说的还是对于你的问题来说是没有区分的哦

事实上前后两个都typedef加入了struct

对于后者,编译器会给struct起个默认的不重复的名字,所以前后两者是没有区别的
[/Quote]

对编译器不大了解,回头有机会查阅一下资料

结贴吧,呵呵,不知道怎么分配比较合适啊
youdang45 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 delphiwcdj 的回复:]
C/C++ code
typedefstruct ST
{long a;int b;char c[2];
}NEW;//感觉还是这样写,比较习惯

[/Quote]

其实我更习惯于另一种写法

soliddream66 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 youdang45 的回复:]
试了一下,呵呵,对于C++是没区别的,对于C是有区别的
因为C中声明struct的一个变量时,必须要有struct关键字
而C++中是不需要的
所以C++中可以声明变量NEW x; 或者 ST x;
而C中只可以 NEW x; 不可以 ST x;

我觉得在C中这么写的主要目的也就在于struct ST捆绑到一起变为一个词
所以C++中这点用的意义就不是很大

[/Quote]
C的语法了,C++没必要用typedef

楼主所说的还是对于你的问题来说是没有区分的哦

事实上前后两个都typedef加入了struct

对于后者,编译器会给struct起个默认的不重复的名字,所以前后两者是没有区别的
delphiwcdj 2009-10-24
  • 打赏
  • 举报
回复

typedef struct ST
{
long a;
int b;
char c[2];
}NEW;
//感觉还是这样写,比较习惯

liushuiyou_sheng 2009-10-24
  • 打赏
  • 举报
回复

啊,这也是我想问的问题。
wanjingwei 2009-10-24
  • 打赏
  • 举报
回复
呵呵,楼主自问自答了
kouwenlong 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 youdang45 的回复:]
试了一下,呵呵,对于C++是没区别的,对于C是有区别的
因为C中声明struct的一个变量时,必须要有struct关键字
而C++中是不需要的
所以C++中可以声明变量NEW x; 或者 ST x;
而C中只可以 NEW x; 不可以 ST x;

我觉得在C中这么写的主要目的也就在于struct ST捆绑到一起变为一个词
所以C++中这点用的意义就不是很大

[/Quote]
en
youdang45 2009-10-24
  • 打赏
  • 举报
回复
试了一下,呵呵,对于C++是没区别的,对于C是有区别的
因为C中声明struct的一个变量时,必须要有struct关键字
而C++中是不需要的
所以C++中可以声明变量NEW x; 或者 ST x;
而C中只可以 NEW x; 不可以 ST x;

我觉得在C中这么写的主要目的也就在于struct ST捆绑到一起变为一个词
所以C++中这点用的意义就不是很大
soliddream66 2009-10-24
  • 打赏
  • 举报
回复
没什么区别

将类型另外起个名字

前一个还可以使用ST

  • 打赏
  • 举报
回复
1中ST也是结构体的类型
herman~~ 2009-10-24
  • 打赏
  • 举报
回复
MARK
la_feng 2009-10-24
  • 打赏
  • 举报
回复
第一种有结构体的名字,可以用名字去声明该结构体变量,如: ST s;

64,651

社区成员

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

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