1

MISRA C 2004 の規則 1.1 は、仕様が c90 をカバーし、c99 をカバーしないことを指定します。

自分でコーディングする代わりに、stdint および stdbool ライブラリを使用したいと考えています。MISRA 実装でこの例外を作成した人はいますか?

4

1 に答える 1

3

必ず stdint.h の型名を使用する必要があります。これは、MISRA-C:2004 準拠の方法で解決した方法です。

#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 */
于 2013-01-16T12:45:50.853 に答える