...
The following tables list these macros and indicate in which version of the C Standard they were introduced. The following macros are required:
Macro Name | C90 | C99 | C11 |
---|---|---|---|
| ✓ | ✓ | ✓ |
|
✓ | ✓ | |
|
✓ | ✓ | ||
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
1) __STDC_VERSION__ was introduced by an Amendment to C90, this version of the C Standard is commonly call C94
The following are optional environment macros:
Macro Name | C90 | C99 | C11 |
---|---|---|---|
|
✓ | ✓ | |
|
✓ | ✓ | ||
|
✓ | ||
|
✓ |
The following are optional feature macros:
Macro Name | C90 | C99 | C11 |
---|---|---|---|
|
✓ | ||
|
✓ | ✓ | |
|
✓ | ✓ | ||
|
|
✓ | ||
|
✓ | ||
|
✓ | ||
|
✓ | |||
|
| ✓ |
The following is optional and is defined by the user:
Macro Name | C90 | C99 | C11 |
---|---|---|---|
__STDC_WANT_LIB_EXT1__ |
✓ |
Noncompliant Code Example (Checking Value of Predefined Macro)
...
Not testing for language features or the version of the implementation being used can lead to unexpected or undefined program behavior.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
PRE13-C | Low | Probable | Low | P6 | L2 |
Automated Detection
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
Axivion Bauhaus Suite |
| CertC-PRE13 | |||||||
LDRA tool suite |
| Partially implemented |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
ISO/IEC TR 24772:2013 | Pre-processor Directives [NMP] |
ISO/IEC 9899:2011 |
6.10.8, "Predefined macro names" K.3.7.1, "Copying functions" |
...
...