top/contents search
[此文由 Alan Watson 于 1996 年发布,转述了 Mark Brader 的建议。Dik Winter 认为该原始想法应归功于 Karl Heuer。]

为此,最好的方法大概是巧妙地使用宏。(我希望我能记住谁发明了这个小技巧。)你可以将 16 位二进制数 1100110011110000 写成
	B16( X X O O X X O O X X X X O O O O )
如果先定义
 	#define X <<1)+1
 	#define O <<1)
 	/* the argument of B16 must be a total of 16 occurrences of
 	   one or the other of the above two macros, effectively
 	   expressing a number in binary */
 	#define B16(arg) (((((((((((((((((0 arg)
为了视觉效果,使用 _ 作为零位(zero-bit)的名称可能比 O 更好;但这会损失一些可移植性,因为标识符 _ 属于 C 实现的命名空间,因此在某些实现中可能被用于某种目的。另一个不错的选择是 o,它暗示了 0 但又不那么像 0。

如果你使用无符号类型来表示位图(bitmap),这是通常的做法,那么在宏 B16 的定义中将 0 强制转换为该类型。

返回


contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管