Misra C++ 2008 coverage

Total rules: 216

Number of implemented: 216

RuleTextCppcheck ID(s)
0-1-1A project shall not contain unreachable code.unreachableCode
duplicateBreak
0-1-2A project shall not contain infeasible paths.unsignedLessThanZero
0-1-3A project shall not contain unused variables.unusedVariable
unusedStructMember
0-1-4A project shall not contain non-volatile POD variables having only one use.misra-cpp-2008-0-1-4
0-1-5A project shall not contain unused type declarations.misra-cpp-2008-0-1-5
0-1-6A project shall not contain instances of non-volatile variables being given values that are never subsequently used.redundantAssignment
unreadVariable
variableScope
0-1-7The value returned by a function having a non-void return type that is not an overloaded operator shall always be used.misra-cpp-2008-0-1-7
0-1-8All functions with void return type shall have external side effect(s).misra-cpp-2008-0-1-8
0-1-9There shall be no dead code redundantAssignment
redundantInitialization
0-1-10Every defined function should be called at least once.unusedFunction
0-1-11There shall be no unused parameters (named or unnamed) in non-virtual functions.misra-cpp-2008-0-1-11
0-1-12There shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override it.misra-cpp-2008-0-1-12
0-2-1An object shall not be assigned to an overlapping object.overlappingWriteUnion
overlappingWriteFunction
0-3-2If a function generates error information, then that error information shall be tested.misra-cpp-2008-0-3-2
1-0-1All code shall conform to ISO/IEC 14882:2003 "The C++ Standard Incorporating Technical Corrigendum 1".misra-cpp-2008-1-0-1
2-3-1Trigraphs shall not be used.misra-cpp-2008-2-3-1
2-5-1Digraphs shall not be used.misra-cpp-2008-2-5-1
2-7-1The character sequence /* shall not be used within a C-style comment.misra-cpp-2008-2-7-1
2-7-2Sections of code shall not be "commented out" using C-style comments.misra-cpp-2008-2-7-2
2-7-3Sections of code should not be "commented out" using C++ comments.misra-cpp-2008-2-7-3
2-10-1Different identifiers shall be typographically unambiguous.misra-cpp-2008-2-10-1
2-10-2Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope.shadowVariable
2-10-3A typedef name (including qualification, if any) shall be a unique identifier.misra-cpp-2008-2-10-3
2-10-4A class, union or enum name (including qualification, if any) shall be a unique identifier.misra-cpp-2008-2-10-4
2-10-5The identifier name of a non-member object or function with static storage duration should not be reused.misra-cpp-2008-2-10-5
2-10-6If an identifier refers to a type, it shall not also refer to an object or a function in the same scope.misra-cpp-2008-2-10-6
2-13-1Only those escape sequences that are defined in ISO/IEC 14882:2014 shall be used.misra-cpp-2008-2-13-1
2-13-2Octal constants (other than zero) and octal escape sequences (other than "\0" ) shall not be used.misra-cpp-2008-2-13-2
2-13-3A "U" suffix shall be applied to all octal or hexadecimal integer literals of unsigned type.misra-cpp-2008-2-13-3
2-13-4Literal suffixes shall be upper case.misra-cpp-2008-2-13-4
2-13-5Narrow and wide string literals shall not be concatenatedmisra-cpp-2008-2-13-5
3-1-1It shall be possible to include any header file in multiple translation units without violating the One Definition Rule.misra-cpp-2008-3-1-1
3-1-2Functions shall not be declared at block scope.misra-cpp-2008-3-1-2
3-1-3When an array is declared, its size shall either be stated explicitly or defined implicitly by initialization.misra-cpp-2008-3-1-3
3-2-1All declarations of an object or function shall have compatible types.misra-cpp-2008-3-2-1
3-2-2The One Definition Rule shall not be violated.ctuOneDefinitionRuleViolation
3-2-3A type, object or function that is used in multiple translation units shall be declared in one and only one file.misra-cpp-2008-3-2-3
3-2-4An identifier with external linkage shall have exactly one definition.misra-cpp-2008-3-2-4
3-3-1Objects or functions with external linkage shall be declared in a header file.misra-cpp-2008-3-3-1
3-3-2If a function has internal linkage then all re-declarations shall include the static storage class specifier.misra-cpp-2008-3-3-2
3-4-1An identifier declared to be an object or type shall be defined in a block that minimizes its visibility.variableScope
3-9-1The types used for an object, a function return type, or a function parameter shall be token-for-token identical in all declarations and re-declarations.misra-cpp-2008-3-9-1
3-9-2typedefs that indicate size and signedness should be used in place of the basic numerical types.misra-cpp-2008-3-9-2
3-9-3The underlying bit representations of floating-point values shall not be used.misra-cpp-2008-3-9-3
4-5-1Expressions with type bool shall not be used as operands to built-in operators other than the assignment operator =, the logical operators &&, ||, ! , the equality operators == and ! =, the unary & operator, and the conditional operator.misra-cpp-2008-4-5-1
4-5-2Expressions with type enum shall not be used as operands to built-in operators other than the subscript operator [ ] , the assignment operator = , the equality operators == and != , the unary & operator, and the relational operators < , <= , > , >= .misra-cpp-2008-4-5-2
4-5-3Expressions with type (plain) char and wchar_t shall not be used as operands to built-in operators other than the assignment operator =, the equality operators == and ! =, and the unary & operator.misra-cpp-2008-4-5-3
4-10-1NULL shall not be used as an integer value.misra-cpp-2008-4-10-1
4-10-2Literal zero (0) shall not be used as the null-pointer-constant.misra-cpp-2008-4-10-2
5-0-1The value of an expression shall be the same under any order of evaluation that the standard permits.unknownEvaluationOrder
5-0-2Limited dependence should be placed on C++ operator precedence rules in expressions.misra-cpp-2008-5-0-2
5-0-3A cvalue expression shall not be implicitly converted to a different underlying type.misra-cpp-2008-5-0-3
5-0-4An implicit integral conversion shall not change the signedness of the underlying type.misra-cpp-2008-5-0-4
5-0-5There shall be no implicit floating-integral conversions.misra-cpp-2008-5-0-5
5-0-6An implicit integral or floating-point conversion shall not reduce the size of the underlying type.misra-cpp-2008-5-0-6
5-0-7There shall be no explicit floating-integral conversions of a cvalue expression.misra-cpp-2008-5-0-7
5-0-8An explicit integral or floating-point conversion shall not increase the size of the underlying type of a cvalue expression.misra-cpp-2008-5-0-8
5-0-9An explicit integral conversion shall not change the signedness of the underlying type of a cvalue expression.misra-cpp-2008-5-0-9
5-0-10If the bitwise operators ~and << are applied to an operand with an underlying type of unsigned char or unsigned short, the result shall be immediately cast to the underlying type of the operand.misra-cpp-2008-5-0-10
5-0-11The plain char type shall only be used for the storage and use of character values.misra-cpp-2008-5-0-11
5-0-12Signed char and unsigned char type shall only be used for the storage and use of numeric values.misra-cpp-2008-5-0-12
5-0-13The condition of an if-statement and the condition of an iteration statement shall have type bool.misra-cpp-2008-5-0-13
5-0-14The first operand of a conditional-operator shall have type bool.misra-cpp-2008-5-0-14
5-0-15Array indexing shall be the only form of pointer arithmetic.misra-cpp-2008-5-0-15
5-0-16A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array.pointerOutOfBounds
5-0-17Subtraction between pointers shall only be applied to pointers that address elements of the same array.comparePointers
5-0-18>, >=, <, <= shall not be applied to objects of pointer type, except where they point to the same array.comparePointers
5-0-19The declaration of objects shall contain no more than two levels of pointer indirection.misra-cpp-2008-5-0-19
5-0-20Non-constant operands to a binary bitwise operator shall have the same underlying type.misra-cpp-2008-5-0-20
5-0-21Bitwise operators shall only be applied to operands of unsigned underlying type.misra-cpp-2008-5-0-21
5-2-1Each operand of a logical && or || shall be a postfix-expression.misra-cpp-2008-5-2-1
5-2-2A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast.misra-cpp-2008-5-2-2
5-2-3Casts from a base class to a derived class should not be performed on polymorphic types.misra-cpp-2008-5-2-3
5-2-4C-style casts (other than void casts) and functional notation casts (other than explicit constructor calls) shall not be used.cstyleCast
5-2-5A cast shall not remove any const or volatile qualification from the type of a pointer or reference.misra-cpp-2008-5-2-5
5-2-6A cast shall not convert a pointer to a function to any other pointer type, including a pointer to function type.misra-cpp-2008-5-2-6
5-2-7An object with pointer type shall not be converted to an unrelated pointer type, either directly or indirectly.misra-cpp-2008-5-2-7
5-2-8An object with integer type or pointer to void type shall not be converted to an object with pointer type.misra-cpp-2008-5-2-8
5-2-9A cast shall not convert a pointer type to an integral type.misra-cpp-2008-5-2-9
5-2-10The increment (++) and decrement (--) operators shall not be mixed with other operators in an expression.misra-cpp-2008-5-2-10
5-2-11The comma operator, && operator and the || operator shall not be overloaded.misra-cpp-2008-5-2-11
5-2-12An identifier with array type passed as a function argument shall not decay to a pointer.misra-cpp-2008-5-2-12
5-3-1Each operand of the ! operator, the logical && or || operators shall have type bool.misra-cpp-2008-5-3-1
5-3-2The unary minus operator shall not be applied to an expression whose underlying type is unsigned.misra-cpp-2008-5-3-2
5-3-3The unary & operator shall not be overloaded.misra-cpp-2008-5-3-3
5-3-4Evaluation of the operand to the sizeof operator shall not contain side effects.sizeofFunctionCall
5-8-1The right hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left hand operand.shiftTooManyBits
5-14-1The right hand operand of a logical &&, || operators shall not contain side effects.misra-cpp-2008-5-14-1
5-17-1The semantic equivalence between a binary operator and its assignment operator form shall be preserved. Compare how variable m1 are used.misra-cpp-2008-5-17-1
5-18-1The comma operator shall not be used.misra-cpp-2008-5-18-1
5-19-1Evaluation of constant unsigned integer expressions shall not lead to wrap-around.misra-cpp-2008-5-19-1
6-2-1Assignment operators shall not be used in sub-expressions.misra-cpp-2008-6-2-1
6-2-2Floating-point expressions shall not be directly or indirectly tested for equality or inequality.misra-cpp-2008-6-2-2
6-2-3Before preprocessing, a null statement shall only occur on a line by itself; it may be followed by a comment, provided that the first character following the null statement is a white-space character.misra-cpp-2008-6-2-3
6-3-1The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement.misra-cpp-2008-6-3-1
6-4-1An if ( condition ) construct shall be followed by a compound statement. The else keyword shall be followed by either a compound statement, or another if statement.misra-cpp-2008-6-4-1
6-4-2All if ... else if constructs shall be terminated with an else clause.misra-cpp-2008-6-4-2
6-4-3A switch statement shall be a well-formed switch statement.misra-cpp-2008-6-4-3
6-4-4A switch-label shall only be used when the most closely-enclosing compound statement is the body of a switch statement.misra-cpp-2008-6-4-4
6-4-5An unconditional throw or break statement shall terminate every non-empty switch-clause.misra-cpp-2008-6-4-5
6-4-6The final clause of a switch statement shall be the default-clause.misra-cpp-2008-6-4-6
6-4-7The condition of a switch statement shall not have bool type.misra-cpp-2008-6-4-7
6-4-8Every switch statement shall have at least one case-clause.misra-cpp-2008-6-4-8
6-5-1A for loop shall contain a single loop-counter which shall not have floating type.misra-cpp-2008-6-5-1
6-5-2If loop-counter is not modified by -- or ++, then, within condition, the loop-counter shall only be used as an operand to <=, <, > or >=.misra-cpp-2008-6-5-2
6-5-3The loop-counter shall not be modified within condition or statement.misra-cpp-2008-6-5-3
6-5-4The loop-counter shall be modified by one of: --, ++, - = n, or + = n; where n remains constant for the duration of the loop.misra-cpp-2008-6-5-4
6-5-5A loop-control-variable other than the loop-counter shall not be modified within condition or expression.misra-cpp-2008-6-5-5
6-5-6A loop-control-variable other than the loop-counter which is modified in statement shall have type bool.misra-cpp-2008-6-5-6
6-6-1Any label referenced by a goto statement shall be declared in the same block, or in a block enclosing the goto statement.misra-cpp-2008-6-6-1
6-6-2The goto statement shall jump to a label declared later in the same function body.misra-cpp-2008-6-6-2
6-6-3The continue statement shall only be used within a well-formed for loop.misra-cpp-2008-6-6-3
6-6-4For any iteration statement there shall be no more than one break or goto statement used for loop termination.misra-cpp-2008-6-6-4
6-6-5A function shall have a single point of exit at the end of the function.missingReturn
misra-cpp-2008-6-6-5
7-1-1A variable which is not modified shall be const qualified.constVariable
constParameter
7-1-2A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified.constParameter
7-2-1An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration.misra-cpp-2008-7-2-1
7-3-1The global namespace shall only contain main, namespace declarations and extern "C" declarations.misra-cpp-2008-7-3-1
7-3-2The identifier main shall not be used for a function other than the global function main.misra-cpp-2008-7-3-2
7-3-3There shall be no unnamed namespaces in header files.misra-cpp-2008-7-3-3
7-3-4Using-directives shall not be used.misra-cpp-2008-7-3-4
7-3-5Multiple declarations for an identifier in the same namespace shall not straddle a using-declaration for that identifier.misra-cpp-2008-7-3-5
7-3-6Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header files.misra-cpp-2008-7-3-6
7-4-2Assembler instructions shall only be introduced using the asm declaration.misra-cpp-2008-7-4-2
7-4-3Assembly language shall be encapsulated and isolated.misra-cpp-2008-7-4-3
7-5-1A function shall not return a reference or a pointer to an automatic variable (including parameters), defined within the function.autoVariables
returnReference
returnTempReference
7-5-2The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist.danglingLifetime
7-5-3A function shall not return a reference or a pointer to a parameter that is passed by reference or const reference.misra-cpp-2008-7-5-3
7-5-4Functions shall not call themselves, either directly or indirectlymisra-cpp-2008-7-5-4
8-0-1An init-declarator-list or a member-declarator-list shall consist of a single init-declarator or member-declarator respectively.misra-cpp-2008-8-0-1
8-3-1Parameters in an overriding virtual function shall either use the same default arguments as the function they override, or else shall not specify any default arguments.misra-cpp-2008-8-3-1
8-4-1Functions shall not be defined using the ellipsis notation.misra-cpp-2008-8-4-1
8-4-2The identifiers used for the parameters in a re-declaration of a function shall be identical to those in the declaration.funcArgNamesDifferent
8-4-3All exit paths from a function with non-void return type shall have an explicit return statement with an expression.missingReturn
8-4-4A function identifier shall either be used to call the function or it shall be preceded by &.misra-cpp-2008-8-4-4
8-5-1All variables shall have a defined value before they are used.uninitvar
uninitdata
uninitStructMember
uninitMemberVar
uninitMemberVarPrivate
uninitDerivedMemberVar
uninitDerivedMemberVarPrivate
8-5-2Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures.misra-cpp-2008-8-5-2
8-5-3In an enumerator list, the = construct shall not be used to explicitly initialize members other than the first, unless all items are explicitly initialized.misra-cpp-2008-8-5-3
9-3-1Const member functions shall not return non-const pointers or references to class-data.misra-cpp-2008-9-3-1
9-3-2Member functions shall not return non-const handles to class-data.misra-cpp-2008-9-3-2
9-3-3If a member function can be made static then it shall be made static, otherwise if it can be made const then it shall be made const.functionConst
functionStatic
9-5-1Unions shall not be used.misra-cpp-2008-9-5-1
9-6-2Bit-fields shall be either bool type or an explicitly unsigned or signed integral type.misra-cpp-2008-9-6-2
9-6-3Bit-fields shall not have enum type.misra-cpp-2008-9-6-3
9-6-4Named bit-fields with signed integer type shall have a length of more than one bit.misra-cpp-2008-9-6-4
10-1-1Classes should not be derived from virtual bases.misra-cpp-2008-10-1-1
10-1-2A base class shall only be declared virtual if it is used in a diamond hierarchy.misra-cpp-2008-10-1-2
10-1-3An accessible base class shall not be both virtual and non-virtual in the same hierarchy.misra-cpp-2008-10-1-3
10-2-1All accessible entity names within a multiple inheritance hierarchy should be unique.duplInheritedMember
misra-cpp-2008-10-2-1
10-3-1There shall be no more than one definition of each virtual function on each path through the inheritance hierarchy.misra-cpp-2008-10-3-1
10-3-2Each overriding virtual function shall be declared with the virtual keyword.misra-cpp-2008-10-3-2
10-3-3A virtual function shall only be overridden by a pure virtual function if it is itself declared as pure virtual.misra-cpp-2008-10-3-3
11-0-1Member data in non-POD class types shall be private.misra-cpp-2008-11-0-1
12-1-1An object’s dynamic type shall not be used from the body of its constructor or destructor.virtualCallInConstructor
12-1-2All constructors of a class should explicitly call a constructor for all of its immediate base classes and all virtual base classes.misra-cpp-2008-12-1-2
12-1-3All constructors that are callable with a single argument of fundamental type shall be declared explicit.noExplicitConstructor
12-8-1A copy constructor shall only initialize its base classes and the non-static members of the class of which it is a member.misra-cpp-2008-12-8-1
12-8-2The copy assignment operator shall be declared protected or private in an abstract class.misra-cpp-2008-12-8-2
14-5-1A non-member generic function shall only be declared in a namespace that is not an associated namespace.misra-cpp-2008-14-5-1
14-5-2A copy constructor shall be declared when there is a template constructor with a single parameter that is a generic parameter.misra-cpp-2008-14-5-2
14-5-3A copy assignment operator shall be declared when there is a template assignment operator with a parameter that is a generic parameter.misra-cpp-2008-14-5-3
14-6-1In a class template with a dependent base, any name that may be found in that dependent base shall be referred to using a qualified-id or this->.misra-cpp-2008-14-6-1
14-6-2The function chosen by overload resolution shall resolve to a function declared previously in the translation unit.misra-cpp-2008-14-6-2
14-7-1All class templates, function templates, class template member functions and class template static members shall be instantiated at least once.misra-cpp-2008-14-7-1
14-7-2For any given template specialization, an explicit instantiation of the template with the template-arguments used in the specialization shall not render the program ill-formed.misra-cpp-2008-14-7-2
14-7-3All partial and explicit specializations for a template shall be declared in the same file as the declaration of their primary template.misra-cpp-2008-14-7-3
14-8-1Overloaded function templates shall not be explicitly specialized.misra-cpp-2008-14-8-1
14-8-2The viable function set for a function call should either contain no function specializations, or only contain function specializations.misra-cpp-2008-14-8-2
15-0-2An exception object should not have pointer type.misra-cpp-2008-15-0-2
15-0-3Control shall not be transferred into a try or catch block using a goto or a switch statement.misra-cpp-2008-15-0-3
15-1-1The assignment-expression of a throw statement shall not itself cause an exception to be thrown.misra-cpp-2008-15-1-1
15-1-2NULL shall not be thrown explicitly.misra-cpp-2008-15-1-2
15-1-3An empty throw (throw;) shall only be used in the compound statement of a catch handler.misra-cpp-2008-15-1-3
15-3-1Exceptions shall be raised only after start-up and before termination.exceptThrowInDestructor
15-3-2There should be at least one exception handler to catch all otherwise unhandled exceptionsmisra-cpp-2008-15-3-2
15-3-3Handlers of a function-try-block implementation of a class constructor or destructor shall not reference non-static members from this class or its bases.misra-cpp-2008-15-3-3
15-3-4Each exception explicitly thrown in the code shall have a handler of a compatible type in all call paths that could lead to that point.misra-cpp-2008-15-3-4
15-3-5A class type exception shall always be caught by reference.misra-cpp-2008-15-3-5
15-3-6Where multiple handlers are provided in a single try-catch statement or function-try-block for a derived class and some or all of its bases, the handlers shall be ordered most-derived to base class.misra-cpp-2008-15-3-6
15-3-7Where multiple handlers are provided in a single try-catch statement or function-try-block, any ellipsis (catch-all) handler shall occur last.misra-cpp-2008-15-3-7
15-4-1If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids.misra-cpp-2008-15-4-1
15-5-1A class destructor shall not exit with an exception.exceptThrowInDestructor
15-5-2Where a function's declaration includes an exception-specification, the function shall only be capable of throwing exceptions of the indicated type(s).misra-cpp-2008-15-5-2
15-5-3The terminate() function shall not be called implicitly.exceptThrowInDestructor
16-0-1#include directives in a file shall only be preceded by other pre-processor directives or comments.misra-cpp-2008-16-0-1
16-0-2Macros shall only be #define’d or #undef’d in the global namespace.misra-cpp-2008-16-0-2
16-0-3#undef shall not be used.misra-cpp-2008-16-0-3
16-0-4Function-like macros shall not be defined.misra-cpp-2008-16-0-4
16-0-5Arguments to a function-like macro shall not contain tokens that look like pre-processing directives.preprocessorErrorDirective
16-0-6In the definition of a function-like macro, each instance of a parameter shall be enclosed in parentheses, unless it is used as the operand of # or ##.misra-cpp-2008-16-0-6
16-0-7Undefined macro identifiers shall not be used in #if or #elif pre-processor directives, except as operands to the defined operator.misra-cpp-2008-16-0-7
16-0-8If the # token appears as the first token on a line, then it shall be immediately followed by a pre-processing token.misra-cpp-2008-16-0-8
16-1-1The defined pre-processor operator shall only be used in one of the two standard forms.misra-cpp-2008-16-1-1
16-1-2All #else, #elif and #endif pre-processor directives shall reside in the same file as the #if or #ifdef directive to which they are related.misra-cpp-2008-16-1-2
16-2-1The pre-processor shall only be used for file inclusion and include guards.misra-cpp-2008-16-2-1
16-2-2C++ macros shall only be used for include guards, type qualifiers, or storage class specifiers.misra-cpp-2008-16-2-2
16-2-3Include guards shall be provided.misra-cpp-2008-16-2-3
16-2-4The ' , " , /* or // characters shall not occur in a header file name.misra-cpp-2008-16-2-4
16-2-5The \\ character should not occur in a header file name.misra-cpp-2008-16-2-5
16-2-6The #include directive shall be followed by either a <filename> or "filename" sequence.misra-cpp-2008-16-2-6
16-3-1There shall be at most one occurrence of the # or ## operators in a single macro definition.misra-cpp-2008-16-3-1
16-3-2The # and ## operators should not be used.misra-cpp-2008-16-3-2
17-0-1Reserved identifiers, macros and functions in the standard library shall not be defined, redefined or undefined.misra-cpp-2008-17-0-1
17-0-2The names of standard library macros and objects shall not be reused.misra-cpp-2008-17-0-2
17-0-3The names of standard library functions shall not be overridden.misra-cpp-2008-17-0-3
17-0-5The setjmp macro and the longjmp function shall not be used.misra-cpp-2008-17-0-5
18-0-1The C library shall not be used.misra-cpp-2008-18-0-1
18-0-2The library functions atof, atoi and atol from library <cstdlib> shall not be used.misra-cpp-2008-18-0-2
18-0-3The library functions abort, exit, getenv and system from library <cstdlib> shall not be used.misra-cpp-2008-18-0-3
18-0-4The time handling functions of library <ctime> shall not be used.misra-cpp-2008-18-0-4
18-0-5The unbounded functions of library <cstring> shall not be used.misra-cpp-2008-18-0-5
18-2-1The macro offsetof shall not be used.misra-cpp-2008-18-2-1
18-4-1Dynamic heap memory allocation shall not be used.misra-cpp-2008-18-4-1
18-7-1The signal handling facilities of <csignal> shall not be used.misra-cpp-2008-18-7-1
19-3-1The error indicator errno shall not be used.misra-cpp-2008-19-3-1
27-0-1The stream input/output library <cstdio> shall not be used.misra-cpp-2008-27-0-1