16.3

6.16 Functions

Moderators: misra-c, david ward

beckschulze
Posts: 1
Joined: Thu Jan 28, 2010 11:23 am
Company: RWTH Aachen

16.3

Postby beckschulze » Fri Apr 15, 2011 1:52 pm

Just to make sure, does rule 16.3 also apply to declarations of function pointers?

void (*pt2Function)(int);

Sould I give a name to the parameter?
Does that make sense at all?

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

Re: 16.3

Postby misra-c » Wed Apr 20, 2011 9:27 am

Although the rule is worded in terms of declarations, the intention is that it should apply to all prototypes. A declaration of a function pointer should specify the parameter names, for example:

Code: Select all

void (*pt2Function)(int size);


Any type-casts to function pointer types should also specify the parameter names in the prototype.
---
Posted by and on behalf of
the MISRA C Working Group

gs
Posts: 87
Joined: Thu Nov 18, 2004 1:39 am

Re: 16.3

Postby gs » Wed May 23, 2012 6:44 pm

So, would the following code, built upon the original example, be in violation of the rule?

Code: Select all

pt2Function a;
void a( int something_other_than_the_word_size ) {
    global_int = something_other_than_the_word_size;
}

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

Re: 16.3

Postby misra-c » Fri May 25, 2012 9:59 am

The example doesn't violate Rule 16.3 because the prototyped declaration of function a names its parameter.

However, the code doesn't seem to be valid anyway because:
  • pt2Function is declared as an object, not a type in the original example, so cannot be used to declare the object a
  • even if pt2Function were a type, a would be declared as an object and then redeclared as a function
---
Posted by and on behalf of
the MISRA C Working Group

gs
Posts: 87
Joined: Thu Nov 18, 2004 1:39 am

Re: 16.3

Postby gs » Fri May 25, 2012 3:18 pm

Good point. Consider, however, the following:

Code: Select all

typedef void (*pt2Function)(int stuff);
pt2Function a;
void b(int non_stuff)
    {}
void c()
    {
    a = b;
    }

Does this code violate the rule?

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

Re: 16.3

Postby misra-c » Sun May 27, 2012 4:00 pm

Both prototype declarations, pt2Function and b, name their parameters so both are compliant with Rule 16.3.
---
Posted by and on behalf of
the MISRA C Working Group


Return to “6.16 Functions”

Who is online

Users browsing this forum: No registered users and 2 guests