关于int m[] = {WHITE, BLACK, BLUE, BRED}的理解

2019-07-20 16:52发布

在UCOSIII扩展例程下面使用信号量进行任务同步的源码中,遇到这样一个定义:
int lcd_discolor[14]={        WHITE, BLACK, BLUE,  BRED,      
                                GRED,  GBLUE, RED,   MAGENTA,                
                                GREEN, CYAN,  YELLOW,BROWN,                        
                                BRRED, GRAY };
然后在下面就这样遍历这个数组:lcd_discolor[num%14];
我认为自己的C学得还算可以,可是看似简单的一个字符数组定义我以前没见过,也理解不通,可是这个定义确实能让程序正确的运行。我不理解的地方:
(1)数组里面每个元素都定义为int类型(即4个字节),如果用来存放字符串,显然应当理解成这样:lcd_discolor[0] = {"WHITE"};lcd_discolor[1] = {"BLACK"};.... lcd_discolor[13]={"GRAY"}但是没加引号这样是什么意思?
(2)为何要定义成int,为什么不是char?
我真的不理解上面这个定义,我知道两种处理字符串的两种方法:char *p = "hello!"; char a[] = "hello!";像这样的int m[] = {WHITE, BLACK, BLUE,  BRED}做何解释???麻烦大家有谁知道的帮我讲解一下。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
taizonglai
1楼-- · 2019-07-20 19:50
点击查看WHITE是什么东西!!!这些是宏定义。简单到不能再简单的东西,只想说,你想太多了。
civic7366
2楼-- · 2019-07-20 22:42
你沒看過 #define 嗎? WHITE不是字串,他是常量...

這很基礎耶...


civic7366
3楼-- · 2019-07-20 23:08
 精彩回答 2  元偷偷看……
ytuljj
4楼-- · 2019-07-21 00:00
谢了,是个宏,没点进去看
15623052920
5楼-- · 2019-07-21 05:28
 精彩回答 2  元偷偷看……

一周热门 更多>