二级C宏,第1张

二级C宏,第2张

四。用C宏,睿智思维的火花讲了半天,嘴都干了。我们来简单点,比如——看看外国人是怎么用宏的。这个例子摘自C专家编程。根据位模式构建图形图标或图形(字形)是映射到屏幕生成的图像的小位模式。一位代表图像上的一个像素。如果一个位被置位,它所代表的像素是“亮的”。如果一个位被清零,它所代表的像素是“暗”的。因此,可以使用一系列整数值对图像进行编码。像Iconedit这样的工具用于绘图。它们的输出是一个包含一系列整数的ASCII文件,可以被窗口程序包含。问题是程序中的图标只是一串十六进制的数字。在C语言中,典型的16X16黑白图形可能如下:

静态无符号短秒表[] = {
0x07C6,
0x1FF7,
0x383B,
0x600C,
0x600C,
0xC006,
0xDF06,
0xC106,
0xC106,
0x610C,
0x610C,
0x 610 c,

正如您所看到的,这些C语言常量没有提供任何关于图形实际外观的线索。这里有一个令人惊叹的优雅的#define定义集合,允许程序建立常数,使它们看起来像屏幕上的图形。

# define X)* 2+1
# define _)* 2
# define s((((((((((((((((0/*用于构建16位宽的字形*/


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


静态无符号短秒表[]=
{
s _ _ _ _ _ X X X _ _ _ X X _,
s _ _ _
s _ _ X X X _ _ _ X X X X X,
s _ X X X _ _ _ _ _ _ _ _ X X _ _,
s _ X X X _ _ _ _ _ _ _ _ X X _ _,
s X X X _ _ _ _ _ _ _ _ X X _,
s X X X _ _ _ _ _ _ _ _ X X _,
s X X X X X X X X _,
s X X X _ _ _ _ _ X X X _,
s X X X _ _ _ _ _ X X _,
s X X X _ _ _ _ _ X X X _,
s _ X X _ X _ X _ X _ X _ _,
s _ _ _ X _ X _ X _ X _ _,
s _ _ _ X X X X X X _ _ _,
s _ _ _ X X X X _ _ _,
s _ _ _ _ _ _ _ _ _ _ _ _ _
};


显然,它的意义比前面的代码更明显。标准的C语言有八进制、十进制和十六进制常量,但是没有二进制常量,否则是比较简单的绘制图形模式的方法。

如果你抓住书的右上角,斜着看这一页,你可能会猜到这是一个流行窗口系统的“光标忙”小秒表图形。几年前,我从新闻组新闻集团学到了这项技能。

画好之后别忘了清除这些宏定义,否则很可能会给后面的代码带来不可预知的后果。

好了,今天的废话到此为止。水能载舟,亦能覆舟。抓住手中的双刃剑,让它好好为你服务。不要切到手。(完)

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C宏

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情