半个我

hengai的BLOG
随笔 - 17, 文章 - 4, 评论 - 134, 引用 - 2

导航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

相册

VCKBASE

搜索

最新评论

阅读排行榜

评论排行榜

struct 定义在C++与C中的区别(VC6编译器)

这个问题好久前就知道了,但是这次出现竟然糊涂了半小时,特此记录增强记忆。

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

因为自己一直使用C++,习惯于下面的方式定义 struct

struct S{

  //

};


在VC6中,如果是cpp后缀名那么是没有问题的,但是如果后缀名为c,那么就会出现 error C2081 等错误,意思就是 S 没有定义等。
应该写成下面的定义方式

typedef struct tagS{

  //

}S;


看看微软写的就知道了

typedef struct tagRECT

{

    LONG    left;

    LONG    top;

    LONG    right;

    LONG    bottom;

} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

posted on 2008-03-26 17:50 hengai 阅读(1577) 评论(2)  编辑 收藏

评论

# re: struct 定义在C++与C中的区别(VC6编译器)

在C里面,你可以
struct S {
  int a, b;
} s_instance;
也可以 
typedef struct {
  int a, b;
} S;
S s_instance;

注意:前者struct S {} 是一个类型,中间的S是一个tag,所以只能用1次。
后者typedef把struct {} 定义为类型S,所以S可以多用。


2008-04-04 09:25 | 笑笑

# re: struct 定义在C++与C中的区别(VC6编译器)

同意上面的说法
2008-04-24 23:58 | 网站建设
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]