c语言中这串代码是什么意思,到底用来干什么 #define a 0x00001

我在调用windows api时,经常看到一些消息就是这么被定义的,这种标记法被称为位标记,但是不知其功能和作用,希望可以知道一下,讲究其实际作用,最好能给我一些源代码做些参考

知道“32位””64位“的“位”是什么的话应该不难理解“位标记”的字面意思吧……那么假如有一个int型数,其每一位都有其特殊含义(例如第二位代表是否支持intel处理器,第一位代表是否支持AMD处理器。1代表是,0代表否<-这只是随便举的一个例子),那么32位下一个int型数就可以传递32个信息,通过”按位与“”按位或“运算,可以给其加上或移去特定的信息。#define SUPPORT_INTEL 0x00002(<-其实这就表示只有第二位是1的整数)以及#define SUPPORT_AMD 0x00001就是对用作某种用途的整型数的一位进行取名,使其更易理解,当SUPPORT_AMD | SUPPORT_INTEL作为参数传递的时候,函数通过对参数进行计算可得到其确切含义(既支持intel处理器,也支持AMD处理器),又不需用到高级的数据结构,从而保证了对大多数编程语言的支持……追问

这我懂了,但是windows是如何区别这些消息呢,比如说
switch(msg)
{
HDC hdc;
case WM_CREATE:
{
}
}
这个WM_CREATE消息它是如何判断的呢?
帮人帮到底,送佛送到西,希望可以得到一个完善的答案,十分感谢

追答

WM_CREATE只是Windows传给你的消息吧……调用Windows的不同函数,Windows当然能知道发生了什么,并且给相应的程序传递消息……

追问

我的意思是它是如何区别的

追答

【调用不同函数】

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-10
#define a 0x00001——这是个宏定义,意思是使宏名字a和字符串0x00001等价。有了它,在以后的代码中凡是以数据常量身分出现的a,都会被编译器用0x00001来代替。宏定义属于预处理语句,一般在编译时第一次扫描时就完成了。
第2个回答  2013-02-07
#define啊,宏定义啊,看来你C++基础学的不行,回去复习吧.
#define的主要作用是复杂的表达式同一个简单的名字表示,或是相关的数值用一个单词表示以便方便记录. #define a 0x00001的意思就是以后在代码中出来a这个变量,那么全部在编译的时候替换成0x00001再进行编译.至于0x00001吗,你记着前面加0x都是以16进制的形式表示的数字.比如
#define Number 0x00010;
int i = Number+5;//就是int i = 16+5;追问

拜托,你难道不知道这个称谓位标记吗,我define10年前就知道了,我要的是位标记,BIT SIGN,而不是宏啊宏,老兄

追答

你又说不清楚那谁知道,你自己看你的标题是啥意思.
基本的意思zjfaok已经告诉你了,而且你既然知道define是啥意思,还要问位标记?计算机的基本数据结构是二进制,也就是0和1,也就是与否.一个二进制数字其中某一位代表一个集合中的状态.举例来说,一个游戏角色有5件装备,判断装备是否穿带就可以用一个2进制代表.
00000000,最后一位为1时代表穿了鞋子,第二位代表穿了衣服.将这个二进制放入特定的处理函数中就可以得出角色到底穿了什么装备.windows对消息的判断也是如此

第3个回答  2015-09-24
预定义,程序中出现a 的位置 都用Ox00001代替。
第4个回答  2013-02-07
定义的意思追问

这我也知道啊,我要的是位标记,怎么利用位标记,关于windows api里面的各种消息里的一些利用位标记定义的应用