Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Another GCC extension known as statement expression makes it possible for the block statement to appear where an expression is expected. The statement expression extension establishes a scope (note the curly braces) and any declarations in it are distinct from those in enclosing scopes.

 


Code Block
bgColor#ccccff
langc
#define ABS(x) __extension__ ({ __typeof (x) __tmp = x; __tmp < 0 ? - __tmp : __tmp; })

...

Defining an unsafe macro leads to invocations of the macro with an argument that has side effects, causing those side effects to occur more than once. Unexpected or undefined program behavior can result.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

PRE12-C

Low

Probable

Low

P6

L2

Automated Detection

ToolVersionCheckerDescription
Astrée
Include Page
Astrée_V
Astrée_V
macro-parameter-multiplied
macro-parameter-unused
Partially checked
Axivion Bauhaus Suite

Include Page
Axivion Bauhaus Suite_V
Axivion Bauhaus Suite_V

CertC-PRE12

ECLAIR

Include Page
ECLAIR_V
ECLAIR_V

CC2.PRE12

Fully implemented

Helix QAC

Include Page
Helix QAC_V
Helix QAC_V

C3456
LDRA tool suite
Include Page
LDRA_V
LDRA_V
562 S, 572 S, 35 D, 1 QPartially implemented
PRQA QA-C
RuleChecker

Include Page

PRQA QA-C_vPRQA QA-C_v3456 

RuleChecker_V
RuleChecker_V

macro-parameter-multiplied
macro-parameter-unused
Partially checked

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

Related Guidelines

...


...