关于异常处理

spritsu 2008-11-24 10:51:37
1.在处理异常过程中,总是无法提供比较清晰的错误信息给客户,有个朋友指点说,自己撰写一个异常类,采用如同微软的异常处理模式。但是研究了半天不是很明了,有高人能够形象地指点一二么,最后能有个简短的例子。谢谢~


2.说明:合理排列结构中元素顺序,可节省空间并增加可理解性。
示例:如下结构中的位域排列,将占较大空间,可读性也稍差。
typedef struct EXAMPLE_STRU
{
unsigned int valid: 1;
PERSON person;
unsigned int set_flg: 1;
} EXAMPLE;

若改成如下形式,不仅可节省1字节空间,可读性也变好了。
typedef struct EXAMPLE_STRU
{
unsigned int valid: 1;
unsigned int set_flg: 1;
PERSON person ;
} EXAMPLE;

为什么就节省1字节
...全文
67 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
就呆在云上 2008-11-24
  • 打赏
  • 举报
回复
第一个文件,建议去看看c++编程思想 的 第二卷
的异常部分好像就是第一章

第二个是内存对齐的问题了
Qlaiaqu 2008-11-24
  • 打赏
  • 举报
回复
第二个仍然是内存对其的问题,一般系统采取的策略是,如果我当前类型所占用的4字节范围不能再放下下一个类型的时候,放弃当前4字节,另外新建一个4字节放置变量。例如题目
假设PERSON 占用32位即4字节
typedef struct EXAMPLE_STRU
{
unsigned int valid: 1; //使用valid之后第一个32位还剩31位没有被使用
PERSON person; //此变量大于32位,所以需要另外开辟新的空间,这使得上面的31位浪费了。
unsigned int set_flg: 1; //新开辟4字节,使用1位,浪费31位
} EXAMPLE

typedef struct EXAMPLE_STRU
{
unsigned int valid: 1; //使用1位,还剩31位
unsigned int set_flg: 1; //使用1位,还剩30位
PERSON person ; //内存大小大于4字节,另外开辟内存,浪费前面30位
} EXAMPLE;
如果结果是只省1字节,那么需要考虑PERSON的结构是怎么一回事了。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧