MISRA 8.1

6.8 Declarations and Definitions

Moderators: misra-c, david ward

Post Reply
spd123
Posts: 2
Joined: Tue Apr 09, 2013 2:23 pm
Company: Komoline Aerospace Ltd.

MISRA 8.1

Post by spd123 » Wed Apr 10, 2013 10:17 am

Hi,

[ MISRA 8.1 ] Functions shall have prototype and prototype shall be visible at both the definition and call

I am using cystal revs for C MISRA C 2004 compliance.
Its showing violation in following code. pl. suggest solution for this.

controller specific header file
-----------------------------------------
SFR( P0, 0x80U ); /* Port 0 Latch */

Main.c
----------
void main( void )
Global_Frame[ 0 ] = ( U8 )( Mid_No & 0x1fU ); /* bit of mid */

misra-c
Posts: 556
Joined: Thu Jan 05, 2006 1:11 pm

Re: MISRA 8.1

Post by misra-c » Tue Apr 16, 2013 3:29 pm

It is difficult to provide a detailed comment without seeing more context.

SFR is presumably a function. If it were a macro then a violation of Rule 8.1 would not be expected and if it were a language extension then it would not conform to the ISO C language standard. Assuming that it is a function, the solution is to provide a suitable prototype declaration for it. There may even be such a declaration in a header file provided by the implementation.

In the case of main, the solution again is to provide a suitable declaration at some point prior to the function definition. The return type and the number of parameters along with their types is implementation-defined in a freestanding implementation so provided your declaration and definition match each other and also match the requirements of your implementation there should be no problem.
---
Posted by and on behalf of
the MISRA C Working Group

Post Reply

Return to “6.8 Declarations and Definitions”