8.2 Function types shall be in prototype form with named parameters - Printable Version +- MISRA Discussion Forums (https://forum.misra.org.uk) +-- Forum: MISRA C (https://forum.misra.org.uk/forumdisplay.php?fid=4) +--- Forum: MISRA C:2012 and MISRA C:2023 guidelines (https://forum.misra.org.uk/forumdisplay.php?fid=21) +---- Forum: 8.8 Declarations and defnitions (https://forum.misra.org.uk/forumdisplay.php?fid=163) +---- Thread: 8.2 Function types shall be in prototype form with named parameters (/showthread.php?tid=1634) |
8.2 Function types shall be in prototype form with named parameters - sowisojh - 27-09-2022 Given is the following code: Code: myheader.h Does the function declaration of myCallbackFunction in the above code comply with the Rule 8.2? As the prototype specifies the parameters by usage of the type my_callback_fct_t and this prototype includes all the parameter and their names I would treat this as a correct prototype as requested by Rule 8.2. even though this is not explicitly listed as being compliant in the MISRA standard. The background for this kind of function prototyping is to tie the function to an externally defined function prototype which will be used for callbacks in another part of the code. kind regards sowiso RE: 8.2 Function types shall be in prototype form with named parameters - Francois - 03-10-2022 Hi. MISRA-C group will give you the final answer but, to me there are some things to change... In your comment, your saying "function declaration". This is not correct as your implementation is a "pointer declaration" Therefore the function definition could go wrong with the pointer (name) usage... Maybe i'm wrong: - if you have a good compiler/linker, it will identify the pointer declaration as the function prototype. - if not, you will have a pointer not initialized with the function definition address. 2 objects with the same name... leading to bad things when you will use the pointer... RE: 8.2 Function types shall be in prototype form with named parameters - sowisojh - 04-10-2022 (03-10-2022, 08:02 AM)Francois Wrote: Hi. Hi Francois, no, there is no function pointer declaration shown in the sample code. Of cause it looks quite similar to a function pointer declaration but there is no * here. Please check ISO/IEC 9899:TC3 chapter 6.9.1 Function definitions (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf), in the footnote 141 is an example for function declarations/definitions using typedefs. In my example I would use a "my_callback_fct_t* p_callback" when using it as a function pointer. kind regards sowiso RE: 8.2 Function types shall be in prototype form with named parameters - sowisojh - 10-01-2024 (04-10-2022, 07:21 AM)sowisojh Wrote:(03-10-2022, 08:02 AM)Francois Wrote: Hi. So far there is no answer from the MISRA-C Group. Will they ever respond to this question? For this question is still an open issue. |