不懂为什么我给了一个我觉得很好的建议但反而遭致谩骂和不解?!
我们总是谩骂为什么国外的技术总是那么厉害而我们的不行!
我们总是谩骂为什么别人的工资可以很高而且还可以升职而我们不行!
我们总是谩骂为什么一个程序到我这就总是会出现问题!
其实,根本上是自己的水平有限而又不静下心来去学习!
我欣赏有不同的意见,这样大家会持续讨论从而互相进步,而不是肆意武断给出结论甚至还遭致谩骂,我想从谩骂这点来看你的素质和教养是低下的,你的工作诚然也是失败的。
从楼主这个题目来看,首先我们必须认识到语法本身的严谨性,同时还需要考虑程序的兼容性,除了这些,项目本身还应该有可维护性和扩展性,无论如何如果还未意识到这些的其中一些或者全部,从我的经验看项目本身要么很小或者不再维护,要么项目实际运行时效果很差。我这里说的是实际项目,不是跑个流水灯或过一遍程序示例代码。
以下,摘录ARM CMSIS中的core_cm4.h里面的关于位域的一个代码片段:
- /**
- \brief Union type to access the Application Program Status Register (APSR).
- */
- typedef union
- {
- struct
- {
- uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */
- uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */
- uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */
- uint32_t Q:1; /*!< bit: 27 Saturation condition flag */
- uint32_t V:1; /*!< bit: 28 Overflow condition code flag */
- uint32_t C:1; /*!< bit: 29 Carry condition code flag */
- uint32_t Z:1; /*!< bit: 30 Zero condition code flag */
- uint32_t N:1; /*!< bit: 31 Negative condition code flag */
- } b; /*!< Structure used for bit access */
- uint32_t w; /*!< Type used for word access */
- } APSR_Type;
同时,我检索了ST的cube源代码库和ARM CMSIS代码库,只要有位域的都是uint32_t来声明的,我们从中应该学到一些东西。
另外,关于为什么楼主的例子是可行的问题,不用再争论了,我强调的是语法本身的严谨性、程序的兼容性、项目的可维护性和扩展性。
共勉吧!