考试网 >> IT认证 >> 等级 >> 二级考试 >> 计算机二级C宏--智者的利刃,愚者的恶梦(下)

计算机二级C宏--智者的利刃,愚者的恶梦(下)

发布时间:2006-07-25 12:10     点击:
分页:[1] 2  下一页

  例四、用C宏,智者思维的火花说了半天了,嘴皮子都干了,举个例子大家轻松一下——看看人家老外是怎么用宏的。这个例子摘自《C专家编程》。 根据位模式构建图形图标(icon)或者图形(glyph),是一种小型的位模式映射于屏幕产生的图像。一个位代表图像上的一个像素。如果一个位被设置,那么它所代表的像素就是“亮”的。如果一个位被清除,那么它所代表的像素就是“暗”的。所以,一系列的整数值能够用于为图像编码。类似Iconedit这样的工具就是用于绘图的,他们所输出的是一个包含一系列整型数的ASCII文件,可以被一个窗口程序所包含。它所存在的问题是程序中的图标只是一串十六进制数。在C语言中,典型的16X16的黑白图形可能如下:



static unsigned short stopwatch[] = {

0x07C6,

0x1FF7,

0x383B,

0x600C,

0x600C,

0xC006,

0xC006,

0xDF06,

0xC106,

0xC106,

0x610C,

0x610C,

0x3838,

0x1FF0,

0x07C0,

0x0000

};

  正如所看到的那样,这些C语言常量并未有提供有关图形实际模样的任何线索。这里有一个惊人的#define定义的优雅集合,允许程序建立常量使它们看上去像是屏幕上的图形。

#define X )*2+1

#define _ )*2

#define s ((((((((((((((((0 /* For building glyphs 16 bits wide */



  定义了它们之后,只要画所需要的图标或者图形等,程序会自动创建它们的十六进制模式。使用这些宏定义,程序的自描述能力大大加强,上面这个例子可以转变为:



static unsigned short stopwatch[] =

{

s _ _ _ _ _ X X X X X _ _ _ X X _ ,

s _ _ _ X X X X X X X X X _ X X X ,

s _ _ X X X _ _ _ _ _ X X X _ X X ,

s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,

s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,

s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,

s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,

s X X _ X X X X X _ _ _ _ _ X X _ ,

分页:[1] 2  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有