XChinux 发表时间: 2004-12-11 16:53
没什么不同,呵呵。
不过,如果写类名的话,最好前者用有意义的形式,比如:
typedef struct foo_T
{
ElemType smfoo;
} foo
有一本书,叫做《C++编码规范》,三十块钱,是一个在摩托罗拉中国的人写的。
学学有益。
风中纸页 发表时间: 2004-12-11 17:25 |
谢谢。我总是搞不太清楚这个typedef 和define有什么区别。
XChinux 发表时间: 2004-12-11 22:28 |
#define,是编译预处理命令,严格地说,不是C语言的一部分,而是编译器的一部份。
define在C++中的作用 相对C语言来说已经降低了很多了,其有两个重要 的作用 , 一个是用来定义常量,另一个就是定义宏。定义储常量其实也是宏。比如,我们在头文件中为了防止多重包含,一般这样写:
define就是用来定义这个宏HEADFILE_H的。
=============================
#ifndef HEADFILE_H
#define HEADFILE_H
.
.
.
// 这里是头文件其它主要部分
#endif // define HEADFILE_H
=============================
而typedef,C语言的组成部分,是用来为C语言的类型再定义个别名的,其可能是为数据类型定义别名,也可能是为函数定义别名。
如下面这个是为一个结构定义别名。
typedef struct TableInfo_T
{
char szTableName[20]; // 表名称
int iFieldCount; // 字段个数
bool bHasIdentity; // 表结构中是否有identity约束
char szTableDesp[40]; // 表功能描述
} TABLEINFO;
而下面这个是为一个类函数定义别名。
typedef long (*MyDefiedPProc)(WORD, DWORD, DWORD, DWORD);
这样,我们就可以用下面的形式来定义一个函数指针
MyDefiedPProc pfnMyProc;
调用的时候,直接调用pfnMyProc(arg1, arg2, arg3, arg4)的调用就可以了。
当然,在前面要获取这个指针的值。