MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
MISRA-C-:2004 - é误æ示ï¼åçäºå¼å¸¸
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