微软为啥“多此一举”?
类似:
SHMENUBARINFO info;
info.cbSize = sizeof(info);//问题:既然info已经有确定的大小了,就是可以用sizeof取得其大小,为什么微软还要设置cbSize这样的参数?
类似:
SHMENUBARINFO info;
info.cbSize = sizeof(info);//问题:既然info已经有确定的大小了,就是可以用sizeof取得其大小,为什么微软还要设置cbSize这样的参数?
解决方案 »
- MFC 之 CFileDialog类
- 关于strcat问题
- List Ctrl控件的操作?
- msdn oct 2001 msdn2003 msdn2005有何区别?visual studio6/visual studio2003/visual studio2005有何区别
- 如何重载CListCtrl类,使CListCtrl的第一行与第二三列固定不动?
- 高分奉送,在线等待--VC的基于dialog的应用程序,可以加上数据库的引用吗?
- 版主,我的帖子给错了分儿了,重新给一次,请别删!!!scklotz(晓春) 请进!
- 如何截取网页内容?
- visual c++ 是不是好难?
- 求问大神 bcg出现这个问题怎么解决呀?
- 回家了,不能上教育网查资料,谁的关于图像blog做的比较全推荐一个。
- 招聘 学历就一定要 放在第一条么?
所以需要这个大小来确定。
就版本中有4个变量,而你的sdk中有5个变量,这个时候在你的程序中得到的sizeof和dll中得到的sizeof是一样的么?
sizeof 运算是在编译期完成的(个人理解)
但是最新的C99标准规定sizeof也可以在运行时刻进行计算,而Vc6中没有完全实现新的C99
而微软程序员这么写,想必他也考虑到这些了吧,我觉得这么写我觉得是一种很好的习惯
编译好的程序只能处理字节,不能处理结构体。如果微软的DLL中用到了一个结构体,
如果DLL中要拷贝这个结构体,就要知道这个结构体的大小。
而结构体的大小是可以变的,而dll中是不能知道用户程序中结构体的大小的。因为dll已经编译好了。 dll中的 sizeof(struct)是微软公司在发布这个dll的时候struct的大小,已经写死在dll中了,作为4个字节写死在dll里了。
==============
dll运行的时候,怎么自动感知外部结构体的大小?dll里只能分辨0和1,结构体和类型是编译的时候的事情。运行时类型? 我也不太明白。