C++关于typedef 的问题,问题简单希望大神赐教

typedef struct tagMyStruct //tagMyStruct是指的什么?
{
int iNum;

long lLength;

}MyStruct; //MyStruct指的是什么?

这里 typedef 的作用是为此结构体类型取一个别名 MyStruct。

如果是 C 语言的话,不用 typedef,那么声明一个变量就要这样写:struct tagMyStruct st;

但是 C++ 可以不写 struct,直接 tagMyStruct st;

因此其实你这个 typedef 没什么必要,用最简单的写法就行了:

struct tagMyStruct
{
  int iNum;
  long lLength;
};

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-08
typedef其实就是个别名
tagMyStruct是结构体的名字
后面那个MyStruct 是别名
你这个例子好像没什么特别的意义,MS的头文件,一般都是这么玩的:
typedef struct _FILE_STREAM_INFORMATION {
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER StreamSize;
LARGE_INTEGER StreamAllocationSize;
WCHAR StreamName[1];
} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;

一般MS的命名习惯,struct后面的名字是_XXXX 表示跟系统相关 这里是_FILE_STREAM_INFORMATION
typedef的别名是去掉_的 这里是 FILE_STREAM_INFORMATION
最后还会把指针类型定义上 *PFILE_STREAM_INFORMATION追问

看有的地方讲struct tagMyStruct 等同于MyStruct,这个是的吗?

追答

typedef就是起个别名,这两个名字是一回事

本回答被提问者和网友采纳
第2个回答  2014-10-08
这个理解吧:typedef int INT;

把下面的这部分当做整体看做是"int",
struct tagMyStruct

{
int iNum;
long lLength;
}
套进去就可以了,这样说能明白吗?
第3个回答  2014-10-08
tagMyStruct 是结构体类型

MyStruct 是 struct tagMyStruct 的别名 和 struct tagMyStruct 等价
相似回答