Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 16.5
#1
Does this rule apply also to function pointers?
If I want to declare a function pointer which can be used for pointers to functions with different arguments, something like the following is useful:

uint8_t (* gen_u8p)();

Is this intended to be prohibited by the rule?
<t></t>
Reply
#2
No, rule 16.5 does not apply to function pointers. However, note that:
  • Rule 8.1 requires a function prototype to be visible at call
  • Rule 11.1 does not permit a non-prototyped function pointer to be converted to a prototyped one

Therefore, a pointer to a non-prototyped function cannot be used to call a function and cannot be converted to a pointer that could be used to call a function.

The rationale is to avoid the undefined behaviour that occurs when a function is called by means of a pointer whose type is not compatible with the called function.
Posted by and on behalf of the MISRA C Working Group
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)