我有两个结构体变量,变量名字分别为mmA和mmB。 这两个变量因为实际需要,分配到了不同RAM地址区间。 这两个变量,有一个相同的成员。想用下面的方式定义结构体,但是失败了。 #define SET_FLAG(REG, BIT) \ { \ REG#A.stFlag.##BIT = 1; \ } 出错的图片如附件,帮忙看看怎样修改,谢谢! |
你回头看看HAL库是怎么定义的,先了解C语言,再说宏定义,在了解一下结构体是什么意思
这个问题很特别
c语言知识,后部分讲的结构体
不过兄弟我劝你还是不要研究hal库了,那个hal库的开发工程师我是真的想给他们磕一个,编写的十分不错,就是感觉很乱,但是还可以运行这就…… 你不停的跳转,然后在一个结构体里他们又会给你定义另一个结构体,然后是嵌套结构体,而且对应不同功能,还有数据类型,里面又会给你用很多很巧妙的方式,用起来特别爽,但是想理解得花费大功夫,那么多.H.C.EXT还有很多各种文件,看得我头皮直发麻,不过噢如果你能坚持看下来我觉得你技术一定能到另一种层级
改成这样,是否正确 #define SET_FLAG(REG, BIT) \ { \ REG##.stFlag.##BIT = 1; \ }
为什么要用宏定义呢?定义两个结构体类型,它们共享的成员定义成指针类型,其他的为各自不同的成员类型,这样,指针类型的那个成员将同时体现在这两个不同的变量里。