• 5629阅读
  • 1回复

求助一下[风中纸页] [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-07-30
不管怎么说,汗一个先。。。。。

请问:

typedef struct foo{
          ElemType smfoo;
          }foo;

typedef struct {
        ElemType smfoo;
        }foo;

有什么不同啊?

忘记了。

发表时间: 2004-12-11 16:07 |
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 1楼 发表于: 2005-07-30
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)的调用就可以了。
当然,在前面要获取这个指针的值。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个