...
Code Block | ||
---|---|---|
| ||
int max(a, b) int a, b; { return a >> b ? a : b; } |
Section 6.11 of the C99 standard, "Future language directions," states that "The use of function definitions with separate parameter identifier and declaration lists (not prototype-format parameter type and identifier declarators) is an obsolescent feature."
...
Code Block | ||
---|---|---|
| ||
int max(int a, int b) { return a >> b ? a : b; } |
Noncompliant Code Example (Function Prototypes)
...
Code Block | ||
---|---|---|
| ||
/* file_a.c source file */ int func(int one, int two, int three){ printf(""%d %d %d"", one, two, three); return 1; } |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Other Languages
This rule appears in the C++ Secure Coding Standard as DCL07-CPP. Include the appropriate type information in function declarators.
References
Wiki Markup |
---|
\[[ISO/IEC 9899:1999|AA. C References#ISO/IEC 9899-1999]\] Forward and Section 6.9.1, ""Function definitions"" \[[ISO/IEC PDTR 24772|AA. C References#ISO/IEC PDTR 24772]\] ""IHN Type system"" and ""OTR Subprogram Signature Mismatch"" \[[MISRA 04|AA. C References#MISRA 04]\] Rule 8.2 \[[Spinellis 06|AA. C References#Spinellis 06]\] Section 2.6.1, ""Incorrect Routine or Arguments"" |
...
DCL06-C. Use meaningful symbolic constants to represent literal values in program logic 02. Declarations and Initialization (DCL)