fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. #define IS_WORD_EMPTY(A) ((uint32_t)(A) == (uint32_t)0xFFFFFFFF)
  5.  
  6. const uint32_t empty = 0xFFFFFFFF;
  7.  
  8. static inline uint8_t is_word_empty(float * ptr)
  9. {
  10. uint32_t * tmp = (void *)ptr;
  11. uint8_t ret = (*tmp == empty) ? 0x1 : 0x0;
  12. (void) tmp;
  13. return ret;
  14. }
  15.  
  16. int main(void)
  17. {
  18. int ret = 0;
  19. union {
  20. float v_float;
  21. uint32_t v_u32;
  22. } test;
  23. test.v_u32 = (uint32_t)0xFFFFFFFF;
  24.  
  25. printf("1\tIS_WORD_EMPTY(test.v_float) \t\t\t\t\t\t ");
  26. fputs(IS_WORD_EMPTY(test.v_float) ? "TRUE" : "FALSE", stdout);
  27.  
  28. printf("\r\n2\t(memcmp(&test.v_float,&empty,sizeof(float))==0) \t ");
  29. fputs((memcmp(&test.v_float,&empty,sizeof(float))==0) ? "TRUE" : "FALSE", stdout);
  30.  
  31. printf("\r\n3\tis_word_empty(&test.v_float) \t\t\t\t\t\t ");
  32. fputs(is_word_empty(&test.v_float) ? "TRUE" : "FALSE", stdout);
  33.  
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 2112KB
stdin
Standard input is empty
stdout
1	IS_WORD_EMPTY(test.v_float) 						 FALSE
2	(memcmp(&test.v_float,&empty,sizeof(float))==0) 	 TRUE
3	is_word_empty(&test.v_float) 						 TRUE