6.8 Declarations and Definitions

Moderators: misra-c, david ward

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


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


[ 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 */

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

Posts: 572
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”