大家好,今天小编关注到一个比较有意思的话题,就是关于c语言define函数的问题,于是小编就整理了2个相关介绍c语言define函数的解答,让我们一起看看吧。
c语言中RGB函数如何使用?
typedef unsigned short TUINT16;
#define RGB565(R, G, B) \
(((TUINT16)((R)>>3))<<11) + (((TUINT16)((G)>> 2)) << 5) + ((TUINT16) ((B) >> 3))
#define RGB555_TO_RGB565(X) \
((((X)&0x7FE0) << 1)|((X)&0x003F))
#define COLOR_BLACK RGB565(0, 0, 0)
#define COLOR_DRED RGB565(64, 0, 0)
#define COLOR_DGREEN RGB565(0, 64, 0)
#define COLOR_DBLUE RGB565(0, 0, 64)
RGB是个宏
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
实际是个COLORREF类型的值
而 COLORREF是typedef DWORD COLORREF
实际上就是个表示颜色的 DWORD值
define有什么区别?
Define作为动词时,一种常见用法是“解释定义”,即通过给出一个事物或概念的定义来帮助他人理解该事物或概念;而作为名词时,它指的是一个词或短语的规定意义,通常显式地列在字典里或使用一些特定的符号标记。
在语言学和语法学中,表述词义或语法规则的定义十分重要,因此,我们需要明确理解 define 的准确含义。
此外还有一些相关概念,如 redefinition 重新定义等。
1.
定义不一样 define定义后面不用加分号,并且它的别名在对象的前面 typedef需要加分号,并且它的别后面替换对象的前面
2.
原理不一样 #define是预处理中的宏定义命令,在预处理时进行简单的字符串替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的并报错,例如: 对于第二个输出,我们想要的是(5+1)*6=36,但是宏只是进行了简单的替换5+1*6=11,因此使用宏很容易出现错误,如果要避免必须每步加上括号提升计算优先级 typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。typedef主要用来定义数组、指针、结构体等类型 ,不仅使程序书写简单,也使意义明确,增强可读性。 使用typedef对一个无符号长整型类型
1.const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
2.const可在类中使用,define不能。
3.const不能在语句中定义常量。
4.const只能接受静态的标量,而define可***用任何的表达式。
5.const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
6.const***用一个普通的常量名称。而define可***用表达式作为常量。
7.使用const使得代码简单易读,const本身就是一个语言结构。而define是一个函数。
8.const在编译时比define快很多。
到此,以上就是小编对于c语言define函数的问题就介绍到这了,希望介绍关于c语言define函数的2点解答对大家有用。