首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MISRA C 2004和c99

MISRA C 2004和c99
EN

Stack Overflow用户
提问于 2013-01-15 22:36:12
回答 1查看 1.6K关注 0票数 1

MISRA C2004的规则1.1规定该规范涵盖c90而不是c99。

我想使用stdint和stdbool库,而不是自己编写代码。有没有人在他们的MISRA实现中做了这个例外?

EN

回答 1

Stack Overflow用户

发布于 2013-01-16 20:45:51

您绝对应该使用stdint.h中的类型名称。这就是我如何解决它的,以MISRA-C:2004兼容的方式:

代码语言:javascript
复制
#ifdef __STDC_VERSION__ 
  #if (__STDC_VERSION__ >= 199901L)  /* C99 or later? */
    #include <stdint.h>
    #include <stdbool.h>
  #else
    #define C90_COMPILER
  #endif /* #if (__STDC_VERSION__ >= 199901L) */
#else
  #define C90_COMPILER
#endif /* __STDC_VERSION__  */


#ifdef C90_COMPILER
  typedef unsigned char uint8_t;
  typedef unsigned int  uint16_t;
  typedef unsigned long uint32_t;
  typedef signed char   int8_t;
  typedef signed int    int16_t;
  typedef signed long   int32_t;

  #ifndef BOOL
    #ifndef FALSE
      #define FALSE 0u
      #define false 0u
      #define TRUE  1u
      #define true  1u
    #endif

    typedef uint8_t BOOL;
    typedef uint8_t bool;
  #endif
#endif /* C90_COMPILER */
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14340014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档