pkarashchenko commented on code in PR #7491:
URL: https://github.com/apache/incubator-nuttx/pull/7491#discussion_r1010089765


##########
include/nuttx/usb/usb.h:
##########
@@ -65,10 +65,10 @@
 #define MSBYTE(u16)                             ((u16) >> 8)     /* Get MS 
byte from uint16_t */
 #define LSBYTE(u16)                             ((u16) & 0xff)   /* Get LS 
byte from uint16_t */
 
-#define GETUINT16(p)                            (((uint16_t)p[1] << 8) | 
(uint16_t)p[0])
-#define GETUINT32(p)                            (((uint32_t)p[3] << 24) | \
-                                                 ((uint32_t)p[2] << 16) | \
-                                                 ((uint32_t)p[1] << 8) | 
(uint32_t)p[0])
+#define GETUINT16(p)                            ((uint16_t)((p[1] << 8) | 
p[0]))

Review Comment:
   > Yes, variable parameters list or expression will promote uint16_t to int, 
but it isn't related to this problem. GETUINT16 should ensure the result type 
is uint16_t regardless whether the promotion happen in the following evaluation.
   
   How do you ensure that? I can bet that the assembly code will put that value 
into a register. How can you ensure that register will be 16 bit long on 32 bit 
machine?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to