29.11.2014 Views

MISRA-C-:2004 - 错误提示:发生了异常

MISRA-C-:2004 - 错误提示:发生了异常

MISRA-C-:2004 - 错误提示:发生了异常

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.14 控 制 流<br />

enum ec { RED, BLUE, GREEN } col;<br />

…<br />

if (u16a < 0) /* Not compliant – u16a is always >= 0 */<br />

…<br />

if (u16a 20) ) /* Not compliant – always false */<br />

…<br />

if ( ( s8a < 10 ) || ( s8a > 5) ) /* Not compliant – always true */<br />

…<br />

if ( col 10)<br />

{<br />

if (s8a > 5) /* Not compliant – s8a is not volatile */<br />

{<br />

}<br />

}<br />

规 则 14.1( 强 制 ): 不 能 有 不 可 到 达 (unreachable) 的 代 码 。<br />

本 规 则 是 针 对 那 些 在 任 何 环 境 中 都 不 能 到 达 的 代 码 , 这 些 代 码 在 编 译 时 就 能 被 标 识 出 不<br />

可 到 达 。 规 则 排 除 了 可 以 到 达 但 永 远 不 会 执 行 的 代 码 ( 如 , 保 护 性 编 程 代 码 (defensive<br />

programming) )。<br />

如 果 从 相 关 的 入 口 到 某 部 分 代 码 之 间 不 存 在 控 制 流 路 径 , 那 么 这 部 分 代 码 就 是 不 可 到 达<br />

的 。 例 如 , 在 无 条 件 控 制 转 移 代 码 后 的 未 标 记 代 码 就 是 不 可 到 达 的 :<br />

switch ( event )<br />

{<br />

case E_wakeup:<br />

do_wakeup ();<br />

break; /* unconditional control transfer */<br />

do_more (); /* Not compliant – unreachable code */<br />

/* … */<br />

default:<br />

/* … */<br />

break;<br />

}<br />

对 整 个 函 数 来 说 , 如 果 不 存 在 调 用 它 的 手 段 , 那 么 这 个 函 数 将 是 不 可 到 达 的 。<br />

45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!