Commit 2a291a73 authored by shengnan hu's avatar shengnan hu
Browse files

main

parents
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#if 1 /* Non-compliant */
#include "file2.h"
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#if 1 /* Compliant */
#endif
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#endif
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#include "fi'le.h" /* Non-compliant */
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#include "filename.h" /* Compliant */
#include <filename.h> /* Compliant */
#include another.h /* Non-compliant */
#define HEADER "filename.h"
#include HEADER /* Compliant */
#define FILENAME file2.h
#include FILENAME /* Non-compliant */
#define BASE "base"
#define EXT ".ext"
#include BASE EXT /* Non-compliant */
#include "./include/cpu.h" /* Compliant */
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#define int some_other_type /* Non-compliant */
#include <stdlib.h>
#define while( E ) for ( ; ( E ) ; ) /* Non-compliant */
#define unless( E ) if ( ! ( E ) ) /* Compliant */
#define seq( S1, S2 ) do { \
S1; S2; } while ( false ) /* Compliant */
#define compound( S ) { S; } /* Compliant */
/* Compliant in C90, but not C99 */
#define inline /* Non-compliant */
/* ------------------ Example code from MISRA C:2012 end ------------------ */
#include <stdint.h>
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#define QUALIFIER volatile
#undef QUALIFIER /* Non-compliant */
void f ( QUALIFIER int32_t p )
{
while ( p != 0 )
{
; /* Wait... */
}
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#define M( A ) printf ( #A )
#include <stdio.h>
void main ( void )
{
M (
#ifdef SW /* Non-compliant */
"Message 1"
#else /* Non-compliant */
"Message 2"
#endif /* Non-compliant */
);
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#define M1( x, y ) ( x * y )
r1 = M1 ( 1 + 2, 3 + 4 ); /* Non-compliant */
r2 = M1 ( ( 1 + 2 ), ( 3 + 4 ) ); /* Compliant */
#define M2( x, y ) ( ( x ) * ( y ) )
r3 = M2 ( 1 + 2, 3 + 4 ); /* Compliant */
#define M3( x ) a ## x = ( x )
int16_t M3 ( 0 ); /* Compliant */
#define GET_MEMBER( S, M ) ( S ).M
v = GET_MEMBER ( s1, minval ); /* Compliant */
#define F( X ) G ( X )
#define G( Y ) ( ( Y ) + 1 )
int16_t x = F ( 2 ); /* Compliant */
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#define FALSE 0
#define TRUE 1
#if FALSE /* Compliant */
#endif
#if 10 /* Non-compliant */
#endif
#if ! defined ( X ) /* Compliant */
#endif
#if A > B /* Compliant assuming A and B are numeric */
#endif
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#if M == 0 /* Non-compliant */
#endif
#if defined ( M ) /* Compliant */
#if M == 0 /* Compliant */
#endif
#endif
#if defined ( B ) && ( B == 0 ) /* Compliant */
#endif
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#undef __LINE__ /* Non-compliant */
#define _GUARD_H 1 /* Non-compliant */
#undef _BUILTIN_sqrt /* Non-compliant */
#define defined /* Non-compliant */
#define error my_error /* Non-compliant */
#define isneg( x ) ( ( x ) < 0 ) /* Compliant */
/* ------------------ Example code from MISRA C:2012 end ------------------ */
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#include <tgmath.h>
float f1, f2;
void f ( void )
{
f1 = sqrt ( f2 ); /* Non-compliant */
}
#include <math.h>
float f1, f2;
void f ( void )
{
f1 = sqrtf ( f2 ); /* Compliant */
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
typedef float float32_t;
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
#include <fenv.h>
void f ( float32_t x, float32_t y )
{
float32_t z;
feclearexcept ( FE_DIVBYZERO ); /* Non-compliant */
z = x / y;
if ( fetestexcept ( FE_DIVBYZERO ) ) /* Non-compliant */
{
}
else
{
#pragma STDC FENV_ACCESS ON
z = x * y;
}
if ( z > x )
{
#pragma STDC FENV_ACCESS OFF
if ( fetestexcept ( FE_OVERFLOW ) ) /* Non-compliant */
{
}
}
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
#include <stdint.h>
#include <ctype.h>
#define EOF ( -1 )
typedef _Bool bool_t;
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
bool_t f ( uint8_t a )
{
return ( isdigit ( ( int32_t ) a ) /* Compliant */
&& isalpha ( ( int32_t ) 'b' ) /* Compliant */
&& islower ( EOF ) /* Compliant */
&& isalpha ( 256 ) ); /* Non-compliant */
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
#include <stddef.h>
#include <stdint.h>
#include <string.h>
/* ----------------- Example code from MISRA C:2012 begin ----------------- */
extern char buffer1[ 12 ];
extern char buffer2[ 12 ];
void f1 ( void )
{
( void ) strcpy ( buffer1, "abc" );
( void ) strcpy ( buffer2, "abc" );
/* Non-compliant */
if ( memcmp ( buffer1, buffer2, sizeof ( buffer1 ) ) != 0 )
{
}
}
unsigned char headerStart[ 6 ] = {'h', 'e', 'a', 'd', 0, 164};
void f2 ( const uint8_t *packet )
{
/* Compliant */
if ( ( NULL != packet ) && ( memcmp ( packet, headerStart, 6 ) == 0 ) )
{
}
}
/* ------------------ Example code from MISRA C:2012 end ------------------ */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment