More Related Content Similar to Coding Guide (20) Coding Guide1. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
çµèŸŒã¿ãœãããŠã§ã¢çš èšèª
ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã
(0.8 ãã©ããç)
2005 幎 3 æ
çµæžç£æ¥ç çµèŸŒã¿ãœãããŠã§ã¢éçºå匷åæšé²å§å¡äŒ
ç¬ç«è¡æ¿æ³äºº æ
å ±åŠçæšé²æ©æ§ ãœãããŠã§ã¢ã»ãšã³ãžãã¢ãªã³ã°ã»ã³ã¿ãŒ
1
2. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
ã³ãŒãã£ã³ã°äœæ³ã¬ã€ãçºè¡ã«ããã£ãŠ
è¿å¹ŽïŒçµèŸŒã¿ãœãããŠã§ã¢ã®èŠæš¡ã¯æ¡å€§ã®äžéã蟿ãïŒå€äººæ°ã«ããéçºåœ¢æ
ã«ç§»è¡ããŠããŸããå°èŠæš¡ã§ãã£ãé ã¯
ããŒããŠã§ã¢ã»ãœãããŠã§ã¢ãå
±ã«çç¥ããå°äººæ°ã®éçºè
ã«ããéçºãé²ãããïŒã¹ãã«ã¬ãã«ã®çµ±äžã¯å®¹æã§ããããããïŒ
éçºè
æ°ã®å¢å€§ãšå
±ã«æ§ã
ãªã¹ãã«ã¬ãã«ã®éçºè
ãåç»ããããã«ãªãïŒã¹ãã«ã¬ãã«ã®çµ±äžã®ããã®æœçãä»ãŸã§ä»¥
äžã«å¿
èŠãšãªã£ãŠããŸããç¹ã«ïŒå®å
šæ§ïŒä¿å®æ§ å㳠移æ€æ§ãèæ
®ããé«å質ãªïŒ£èšèªã®ã³ãŒãã£ã³ã°ã¯ïŒçµèŸŒã¿ãœã
ããŠã§ã¢éçºã®äžã§åºç€äœåãšäœçœ®ä»ãããããã®ãšèããŸãã
é«å質ãªïŒ£èšèªã³ãŒãã£ã³ã°ã®ããã«ã¯ïŒéçºè
ã®æé»ã®äºè§£ã§ã³ãŒããèšè¿°ããã®ã§ã¯ãªãïŒã³ãŒãã£ã³ã°èŠçŽã圢åŒ
ç¥ãšããŠå®ãïŒèŠçŽã«åºã¥ããŠã³ãŒããèšè¿°ããããšãæå¹ãšèããŸãããããïŒã³ãŒãã£ã³ã°èŠçŽãå¶å®ããããã«ã¯ïŒïŒ£èš
èªã®ææ³ã«ç²ŸéããŠããå¿
èŠãããããšãªã©ïŒé«ãã¹ãã«ãšå€å€§ãªåŽåãå¿
èŠã§ãããŸãïŒéçºè
ãžã®ç解ãæ·±ãïŒæ®åã»
培åºãå³ãããšã«å€§ããªéå£ãããããšãäºå®ã§ãã
ãã®ãããªèæ¯ããçµæžç£æ¥ççµèŸŒã¿ãœãããŠã§ã¢éçºå匷åæšé²å§å¡äŒã§ã¯ïŒç£å®åŠé£æºã®åçµã¿ã®äžç°ãšããŠïŒ
èšèªã®ã³ãŒãã£ã³ã°èŠçŽãçå®ããŠããæ¹ã察象ã«ãããã³ãŒãã£ã³ã°äœæ³ã¬ã€ãããç·šçºããããšã«ããŸãããç·šçºã«åœã£ãŠ
ã¯ïŒããã°ã©ãã³ã°ææ³ã«ç²Ÿéããæèè
ããæ§æãããã³ãŒãã£ã³ã°äœæ³ã¯ãŒãã³ã°ã°ã«ãŒããçºè¶³ãïŒåæ¡ãå®ãïŒå質
åäžæè¡éšäŒã§è©³çŽ°ã審è°ããæ¹æ³ã§çå®ããŸãããæ¬æžã¯ïŒå質ç¹æ§ã«å¯Ÿå¿ããŠåé¡ããäœæ³ãšïŒããã«å¯Ÿå¿ããã«
ãŒã«çŸ€ããæ§æãããŠããŸããã³ãŒãã£ã³ã°èŠçŽãçå®ããæ¹ã¯ïŒã«ãŒã«çŸ€ã®äžããå¿
èŠéšåãåæšéžæããããšã«ããïŒç®
çã«èŠåã£ãã³ãŒãã£ã³ã°èŠçŽãçå®ããããšãåºæ¥ããšèããŸãã
æ¬æžã¯ïŒã³ãŒãã£ã³ã°èŠçŽçå®è
ã¯ããšããïŒéçºã®ããã©ã³ã®æ¹ã«ã¯ïŒïŒ£èšèªã®æã€ç¹æ§ã俯ç°ãïŒæ°ããªæ°ã¥ãã®ãã£
ãããšãªãïŒåå¿è
ã®æ¹ã«ã¯ïŒéå»ã®å
人ãç¯ããããŠããŠãäœåŸã§ããå®è·µçãªæç§æžãšããŠïŒå©çšããŠããã ãããšãã§
ãããšç¢ºä¿¡ããŠããŸããæ¯éãšãïŒæ¬æžãæå¹ã«æŽ»çšããã ãããšã«ããïŒçµèŸŒã¿ãœãããŠã§ã¢ã®çç£æ§ã®åäž åã³ é«å質
ãªãœãããŠã§ã¢éçºãå®çŸããŠããã ãããšãé¡ã£ãŠãã¿ãŸããã
2005 幎 3 æ
çµèŸŒã¿ãœãããŠã§ã¢éçºå匷åæšé²å§å¡äŒ
å質åäžæè¡éšäŒ
2
3. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
ç®æ¬¡
1. ã¯ããã«.............................................................................................................................. 4
1.1 èæ¯ ....................................................................................................................................................4
1.2 æ¬ã¬ã€ãã®å¯Ÿè±¡è
..................................................................................................................................4
1.3 æ¬ã¬ã€ãã®ç¹åŸŽ .....................................................................................................................................4
1.4 ã«ãŒã«ã®å¯Ÿè±¡ç¯å²..................................................................................................................................5
1.5 çšèªïŒç¥èª ..........................................................................................................................................5
2. å質ç¹æ§ãšäœæ³ ................................................................................................................. 6
2.1 å質ç¹æ§.............................................................................................................................................6
2.2 å質ç¹æ§ãšäœæ³ïŒã«ãŒã«.........................................................................................................................8
3. æ¬ã¬ã€ãã®å©çšæ¹æ³............................................................................................................. 9
3.1 æ°èŠã³ãŒãã£ã³ã°èŠçŽã®äœæ ...................................................................................................................9
3.2 æ¢åã³ãŒãã£ã³ã°èŠçŽã®å
å® .................................................................................................................10
3.3 ããã°ã©ãã®ç ä¿®ïŒç¬ç¿ã®ããã®åŠç¿ææ ...............................................................................................10
4. äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹....................................................................................................... 11
4.1 è¡šã®èŠæ¹ãšçšèª ................................................................................................................................... 11
4.1.1 è¡šã®èŠæ¹......................................................................................................................................... 11
4.1.2 è¡šäžã®çšèª .....................................................................................................................................12
4.2 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹.........................................................................................................................13
4.3 ã«ãŒã«å®çŸ©ãžã®æé.............................................................................................................................48
ä»é²A äœæ³ã»ã«ãŒã«äžèŠ§ ........................................................................................................ 56
ä»é²B ã«ãŒã«ã¯ãã¹ãªãã¡ã¬ã³ã¹.................................................................................................. 64
ä»é²C åŠçç³»å®çŸ©ææžåãã³ãã¬ãŒã .................................................................................... 65
åŒçšã»åèæç®
3
4. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
1. ã¯ããã«
æ¬æžã¯ïŒäŒæ¥ããããžã§ã¯ãã§ã³ãŒãã£ã³ã°èŠçŽãäœæã»éçšãã人ã«å¯ŸããŠïŒã³ãŒãã£ã³ã°èŠçŽäœæã®æ¯æŽãç®çãšãã
ã³ãŒãã£ã³ã°äœæ³ã¬ã€ãã§ããæ¬ã¬ã€ãã®ç¹åŸŽã¯ïŒã³ãŒãã£ã³ã°èŠçŽããå質ãä¿ã€ããã«å®ãã¹ãã³ãŒãã®æžãæ¹ããšèãïŒã«
ãŒã«ã®åºæ¬æŠå¿µãäœæ³ãšããŠãŸãšããããšã§ããäœæ³ã¯ãJIS X 0129-1 ãœãããŠã§ã¢è£œåã®å質 第ïŒéšïŒå質ã¢ãã«ãã«
æºæ ããå質æŠå¿µãåºã«ïŒäœæ³æŠèŠïŒäœæ³è©³çŽ°ã«åé¡ã»éå±€åããŠããŸããããã«ïŒããããã®äœæ³ã«ïŒ£èšèªã«å¯Ÿå¿ãã
ã«ãŒã«ããã®å¿
èŠæ§ãšãšãã«æ瀺ããŠããŸãã ãã®äœæ³ãšã«ãŒã«ã«ããïŒæ矩ã»å¿
èŠæ§ãç解ã§ããïŒå®çšçãªãã³ãŒãã£ã³ã°
èŠçŽãã容æã«äœæã§ããããšãç®æšãšããŠããŸãã
1.1 èæ¯
ã³ãŒãã£ã³ã°èŠçŽã¯ïŒã³ãŒãã®å質ãåäžãããããã«éèŠãªããŒã«ã§ããããããªããïŒçµæžç£æ¥çã® 2004 幎çãçµèŸŒ
ã¿ãœãããŠã§ã¢ç£æ¥å®æ
調æ»ã åã³ çµã¿èŸŒã¿ãœããéçºå匷åå§å¡äŒ å質åäžæè¡éšäŒã®ãã¡ã³ãäŒæ¥ãã¢ãªã³ã°ã
ã§ã¯ïŒæ¬¡ã®ãããªèª²é¡ãæµ®ãã³äžãã£ãŠããŸãã
1. ã³ãŒãã£ã³ã°èŠçŽãååšããªãã
â» ãçµèŸŒã¿ãœãããŠã§ã¢ç£æ¥å®æ
調æ»ãã«ããã°ïŒçŽåæ°ãã³ãŒãã£ã³ã°èŠçŽãååšããªããšåçããŠããŸãã
2. ã«ãŒã«ã®å¿
èŠæ§ãç解ãããªãããŸãã¯ïŒã«ãŒã«éåã«å¯Ÿããæ£ãã察åŠæ¹æ³ãç解ãããŠããªãã
3. ã«ãŒã«ãå€ããããšèŠããããªããïŒå°ãªããšã«ããŒç¯å²ãäžè¶³ããã
4. 粟床ããæ€èšŒã§ããããŒã«ããªãïŒæ€èšŒãã¬ãã¥ãŒã«é Œã£ãŠããã®ã§è² æ
ã倧ããã
5. ã³ãŒãã£ã³ã°èŠçŽã圢骞åããŠããã
æ¬ã¬ã€ãã§ã¯ïŒãããã®åé¡ã®äžã§ïŒ1 ãš 2 ã«å¯ŸããŠäžã€ã®è§£ãæäŸããŠããŸãã
1.2 æ¬ã¬ã€ãã®å¯Ÿè±¡è
æ¬ã¬ã€ããæ³å®ããŠãã察象è
ãšå©çšæ¹æ³ããã³æåŸ
å¹æã瀺ããŸãã
1. ã³ãŒãã£ã³ã°èŠçŽãäœæãã人
æ¬ã¬ã€ãã«ããïŒå®¹æã«æ°èŠã®ã³ãŒãã£ã³ã°èŠçŽãäœæã§ããŸãã ãŸãã¯æ¢ã«ããã³ãŒãã£ã³ã°èŠçŽã®ç¢ºèªïŒæŽçãã§
ããŸãã
2. ããã°ã©ããããã°ã©ã ã¬ãã¥ãŒããã人
æ¬ã¬ã€ãã®äœæ³ã»ã«ãŒã«ãç解ã»ä¿®åŸããããšã«ãã£ãŠïŒä¿¡é Œæ§ã®é«ãïŒä¿å®ããããã³ãŒãã®äœæãç¡çãªãã§ããã
ãã«ãªããŸãã
1.3 æ¬ã¬ã€ãã®ç¹åŸŽ
(1) äœç³»åãããäœæ³ã»ã«ãŒã«
æ¬ã¬ã€ãã§ã¯ïŒãœãããŠã§ã¢ã®å質åæ§ïŒã³ãŒãã®å質ãïŒãä¿¡é Œæ§ãïŒãä¿å®æ§ãïŒã移æ€æ§ããªã©ã®å質ç¹æ§ã§åé¡ã§ã
ããšèãïŒã«ãŒã«ã®åºæ¬æŠå¿µã瀺ãäœæ³ããJIS X 0129-1ããåºã«äœç³»åããŠããŸããã«ãŒã«ã«ã€ããŠã¯ïŒäžã®äžã«ååšã
ãå€ãã®ã³ãŒãã£ã³ã°èŠçŽãååã«åå³ãïŒäœæ³ãšå¯Ÿå¿ããã圢ã§ã³ãŒãã®å質ãšãã芳ç¹ããäœç³»åãïŒçŸåšã®ç¶æ³ïŒèš
èªä»æ§ãåŠçç³»ã®å®æ
ïŒã«ããããŠåæšéžæããŸãããåã
ã®äœæ³ã»ã«ãŒã«ãå質ç¹æ§ã§åé¡ããããšã§ïŒã©ã®å質ãä¿
ã€ããšãäž»ããç®çãšããŠããã®ãç解ã§ããããããŠããŸãã
ãªãïŒæ¬ã¬ã€ããåç
§ããã³ãŒãã£ã³ã°èŠçŽãšããŠïŒWG ã¡ã³ãäŒç€Ÿã®ã³ãŒãã£ã³ã°èŠçŽïŒ "MISRA-C"ïŒ "Indian Hill C
Style and Coding Standards"ïŒ"GNU coding standards" çããããŸãã詳现ã¯å·»æ«ãåŒçšã»åèæç®ãããåç
§ãã ã
ãã
4
5. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
(2) ããã«äœ¿ããã«ãŒã«ãªãã¡ã¬ã³ã¹
æ¬ã¬ã€ãã§ç€ºãã«ãŒã«ã¯ïŒãã®ãŸãŸèŠçŽã«å©çšã§ããããäœæãããŠããŸããïŒç« ãæ¬ã¬ã€ãã®å©çšæ¹æ³ããåèã«ïŒèŠçŽ
ãäœã人ãå¿
èŠãšèããã«ãŒã«ãåæšéžæãïŒãã®äžã§è¶³ããªãã«ãŒã«ãè¿œå ããããšã§ïŒC èšèªã®ã³ãŒãã£ã³ã°èŠçŽã容æ
ã«äœæããããšãå¯èœã§ãã
(3) ã«ãŒã«ã®å¿
èŠæ§ãæ瀺
æ¬ã¬ã€ãã§ã¯ïŒã«ãŒã«ã®å¿
èŠæ§ãäœæ³ã®è¡šçŸïŒã«ãŒã«èªäœã®äžïŒåã³ C èšèªã«ããã泚æäºé
ã§æ瀺ããŠããŸãããã
ã°ã©ãã¯ïŒãã®äœæ³ãšæ³šæäºé
ãåèã«ïŒã«ãŒã«ã®å¿
èŠæ§ãèªãç解ã身ã«ä»ããããšãã§ããŸããã«ãŒã«ã®å€ãã¯ïŒçç·Žã
ãããã°ã©ãã§ããã°ãã§ã«ç¥èãšããŠç²åŸããŠããã³ãŒãã£ã³ã°æã®æ³šæäºé
ã«å¯Ÿå¿ããŸãã
(4) ä»ã®ã³ãŒãã£ã³ã°èŠçŽãšã®å¯Ÿå¿é¢ä¿ãæ瀺
æ¬ã¬ã€ãã§ã¯ïŒåã«ãŒã«ã«ã€ããŠïŒäžã®äžã§äœ¿ãããŠããã³ãŒãã£ã³ã°èŠçŽãšã®å¯Ÿå¿é¢ä¿ã瀺ããŠããŸããããã«ãã£ãŠïŒå
å«é¢ä¿ãªã©ã確èªããããããŠããŸãã察å¿ã瀺ããŠããã³ãŒãã£ã³ã°èŠçŽãšããŠã¯ïŒ "MISRA-C"ïŒ "Indian Hill C Style
and Coding Standards"ããããŸãã
1.4 ã«ãŒã«ã®å¯Ÿè±¡ç¯å²
æ¬ã¬ã€ãã§ã¯ïŒæ¬¡ã«é¢ããã«ãŒã«ã¯ïŒC èšèªã®ãªãã¡ã¬ã³ã¹ã«ãŒã«ã®å¯Ÿè±¡å€ãšããŠããŸãã
ã»ã©ã€ãã©ãªé¢æ°
ã»ã¡ããªã¯ã¹ïŒé¢æ°ã®è¡æ°ã»è€é床ãªã©ïŒ
1.5 çšèªïŒç¥èª
æ¬ã¬ã€ãã§ã¯ïŒä»¥äžã®çšèªãšç¥èªã䜿çšããŠããŸãã
ã» äœæ³ ãœãŒã¹ã³ãŒãã®å質ãä¿ã€ããã®æ
£ç¿ïŒå®è£
ã®èãæ¹ã§ããïŒåã
ã®ã«ãŒã«ã®åºæ¬æŠå¿µã瀺ãã
ã» ã«ãŒã« å®ããªããã°ãªããªãïŒå
·äœçãªäžã€äžã€ã®æ±ºãäºãæ¬ã¬ã€ãã§ã¯è€æ°ã®ã«ãŒã«ãã«ãŒã«ãšåŒã¶ããšã
ããã
ã» èŠçŽ ããç®çãæã£ãŠéããããïŒã«ãŒã«ã®éåã
ã» åŒçš ãã®ã¬ã€ãäžã§ïŒåæç®ã®äžã®è¡šçŸããã®ãŸãŸ(æèš³ãå«ã)䜿çšããããšã
ã» åèæç® ãã®ã¬ã€ããäœæããäžã§ïŒåèã«ããæç®ã
ã» C90 ãJIS X 3010:1996 ããã°ã©ã èšèª Cãã§èŠå®ããã C èšèªèŠæ Œã®ããšããJIS X 3010:1993 ããã°ã©
ã èšèª Cãã 1996 幎ã«è¿œè£ã»èšæ£ããããã®ã§ããã翻蚳å
ã® ISO/IEC 9899:1990 ã 1990 幎ã«
çºè¡ãããããïŒãC90ããšåŒã¶ããšãå€ãããªãïŒC èšèªèŠæ Œã¯ãã§ã«æ¹æ£ãã C99 ãšãªã£ãŠããïŒC90
ã¯æ§èŠæ Œã§ãããããããªããïŒçŸç¶äžã®äžã«æ®åããŠããèŠæ ŒããŸã C90 ã§ããããšïŒãŸãïŒæ¹çã«
ããæ©èœè¿œå ã¯å€ãã¯ãªãããšãªã©ããïŒæ¬ã¬ã€ãã§ã¯ïŒå¯Ÿè±¡ãšããèšèªèŠæ Œãšã C90 ãæ¡çšããŠããã
ã» C99 ãJIS X 3010:2003 ããã°ã©ã èšèª Cãã§èŠå®ããã C èšèªèŠæ Œã®ããšãC èšèªã®çŸåšã®èŠæ Œã§ããã
翻蚳å
ã® ISO/IEC 9899:1999 ã 1999 幎ã«çºè¡ãããããïŒãC99ããšåŒã¶ããšãå€ãã
ã» C++ ãJIS X 3014:2003 ããã°ã©ã èšèª C++ãã§èŠå®ããã C++èšèªèŠæ Œã®ããšã
ã» MISRA-C MISRA-C:1998 åã³ MISRA-C:2004 ã®ããš
ã» MISRA-C:1998 è±åœ The Motor Industry Software Reliability Association(MISRA)ã«ãã£ãŠå®ããããïŒåŒ
çšã»åèæç®[5]ã®èŠçŽã®ããšã
ã» MISRA-C:2004 è±åœ MISRA ã«ãã£ãŠå®ããããïŒåŒçšã»åèæç®[6]ã®èŠçŽã®ããšãMISRA-C:1998 ã®æ¹èšçã§
ããã
5
6. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
2. å質ç¹æ§ãšäœæ³
2.1 å質ç¹æ§
æ¬ã¬ã€ãã§ã¯ïŒå質ãä¿ã€ã³ãŒããæžãããã«å®ãã¹ãäœæ³ã»ã«ãŒã«ã®ççŒç¹ãšã㊠JIS X 0129-1 ã®ãäž»å質ç¹æ§ãã
åèã«ããŠããŸããJIS X 0129-1 ã®ãäž»å質ç¹æ§ãã¯ïŒ 次ã®ïŒã€ã®ç¹æ§ã§æ§æãããŠããŸãã
1.ä¿¡é Œæ§ 2.ä¿å®æ§ 3.移æ€æ§ 4.å¹çæ§ 5.æ©èœæ§ 6.䜿çšæ§
ãã®ãã¡ïŒãæ©èœæ§ãïŒã䜿çšæ§ãã®ïŒç¹æ§ã«ã€ããŠã¯ïŒããäžæµã®èšèšæ®µé以åã«äœãããã¹ãç¹æ§ãšèãïŒãä¿¡é Œæ§ãïŒ
ãä¿å®æ§ãïŒïœ¢ç§»æ€æ§ïœ£åã³ãå¹çæ§ãã®ïŒç¹æ§ãäœæ³ã®å€§åé¡ãšããŠæ¡çšããŠããŸãã è¡šïŒã«ïŒJIS X 0129-1 ã®ãäž»å質
ç¹æ§ããšæ¬ã¬ã€ããèãããã³ãŒãã®å質ãã®é¢ä¿ãïŒãå質å¯ç¹æ§ããšå
±ã«ç€ºããŸãã
è¡š 1 ãœãããŠã§ã¢ã®å質ç¹æ§ãšã³ãŒãã®å質
å質ç¹æ§ïŒJIS X0129-1ïŒ å質å¯ç¹æ§ïŒJIS X0129-1ïŒ ã³ãŒãã®å質
æçæ§ ãœãããŠã§ã¢ã«æœåšããé害ã®çµæãšããŠçã 䜿ã蟌ãã ãšãã®ãã°ã®å°ãªãã
ãæ
éãåé¿ãããœãããŠã§ã¢è£œåã®èœåã
æå®ãããæ¡ä»¶äžã§å©çš éå®³èš±å®¹æ§ ãœãããŠã§ã¢ã®é害éšåãå®è¡ããå ŽåïŒãŸã ãã°ãã€ã³ã¿ãŒãã§ãŒã¹éåãªã©ã«å¯Ÿ
ä¿¡ ã¯ä»æ§åãããã€ã³ã¿ãã§ãŒã¹æ¡ä»¶ã«éåã ãã蚱容æ§ã
ãããšãïŒæå®ãããéæ
é Œ çºçããå Žåã«ïŒæå®ãããéææ°Žæºãç¶
æ°Žæºãç¶æãããœãããŠã§
æ§ æãããœãããŠã§ã¢è£œåã®èœåã
ã¢è£œåã®èœåã
ååŸ©æ§ æ
éæã«æå®ãããéææ°Žæºãå確ç«ãïŒ
çŽæ¥ã«åœ±é¿ãåããããŒã¿ãå埩ãããœãã
ãŠã§ã¢ã®èœåã
ä¿¡é Œæ§æšæº ä¿¡é Œæ§ã«é¢é£ããèŠæ ŒãŸãã¯èŠçŽãéµå®ã
é©åæ§ ããœãããŠã§ã¢è£œåã®èœåã
解ææ§ ãœãããŠã§ã¢ã«ããæ¬ é¥ã®èšºæãŸãã¯æ
éã®å ã³ãŒãã®ç解ããããã
å ã®è¿œæ±ïŒåã³ãœãããŠã§ã¢ã®ä¿®æ£ç®æã®è
å¥ãè¡ãããã®ãœãããŠã§ã¢è£œåã®èœåã
å€æŽæ§ æå®ãããä¿®æ£ãè¡ãããšãã§ãããœãããŠã§ã¢ ã³ãŒãã®ä¿®æ£ããããã
補åã®èœåã
ä¿
ä¿®æ£ã®ããããã«é¢ãã㜠å®å®æ§ ãœãããŠã§ã¢ã®ä¿®æ£ã«ããïŒäºæãã¬åœ±é¿ãé¿ ä¿®æ£ã«ãã圱é¿ã®å°ãªãã
å®
ãããŠã§ã¢è£œåã®èœåã ãããœãããŠã§ã¢è£œåã®èœåã
æ§
è©Šéšæ§ ä¿®æ£ãããœãããŠã§ã¢ã®åŠ¥åœæ§ç¢ºèªãã§ãã㜠修æ£ããã³ãŒãã®ãã¹ãïŒãããã°ã®ã
ãããŠã§ã¢è£œåã®èœåã ãããã
ä¿å®æ§æšæº ä¿å®æ§ã«é¢é£ããèŠæ ŒãŸãã¯èŠçŽãéµå®ã
é©åæ§ ããœãããŠã§ã¢è£œåã®èœåã
ç°å¢é©å¿æ§ ãœãããŠã§ã¢ã«ãããããçšæããã以å€ã®ä» ç°ãªãç°å¢ãžã®é©å¿ã®ããããã
å çãªäœæ³ãŸãã¯æ段ãªãã«ïŒæå®ããã â» æšæºèŠæ Œãžã®é©åæ§ãå«ãã
ç°ãªãç°å¢ã«ãœãããŠã§ã¢ãé©å¿ãããããã®
ãœãããŠã§ã¢è£œåã®èœåã
èšçœ®æ§ æå®ãããç°å¢ã«èšçœ®ããããã®ãœãããŠã§ã¢
ã®èœåã
移 ããç° å¢ ããä» ã®ç° å¢ ã«
å
±åæ§ å
±éã®è³æºãå
±æããå
±éã®ç°å¢ã®äžã§ïŒ
æ€ ç§»ãããã®ãœãããŠã§ã¢è£œå
ä»ã®ç¬ç«ãããœãããŠã§ã¢ãšå
±åããããã®ãœã
æ§ ã®èœåã
ããŠã§ã¢è£œåã®èœåã
眮ææ§ åãç°å¢ã§ïŒåãç®çã®ããã«ïŒä»ã®æå®ã
ãããœãããŠã§ã¢è£œåãã眮ãæããŠäœ¿çšãã
ããšãã§ãããœãããŠã§ã¢è£œåã®èœåã
移æ€æ§æšæº 移æ€æ§ã«é¢é£ããèŠæ ŒãŸãã¯èŠçŽãéµå®ã
é©åæ§ ããœãããŠã§ã¢è£œåã®èœåã
6
7. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
å質ç¹æ§ïŒJIS X0129-1ïŒ å質å¯ç¹æ§ïŒJIS X0129-1ïŒ ã³ãŒãã®å質
æéå¹çæ§ æ瀺çãªæ¡ä»¶ã®äžã§ïŒãœãããŠã§ã¢ã®æ©èœã åŠçæéã«é¢ããå¹çæ§ã
å®è¡ããéã®ïŒé©åãªå¿çæéïŒåŠçæ
éåã³ åŠçèœåãæäŸãããœãããŠã§ã¢è£œ
æ瀺çãªæ¡ä»¶ã®äžã§ïŒäœ¿ åã®èœåã
å¹
çšããè³æºã®éã«å¯Ÿæ¯ã è³æºå¹çæ§ æ瀺çãªæ¡ä»¶ã®äžã§ïŒãœãããŠã§ã¢æ©èœãå® è³æºã«é¢ããå¹çæ§ã
ç
ãŠé©åãªæ§èœãæäŸãã è¡ããéã®ïŒè³æºã®éåã³ è³æºã®çš®é¡ã
æ§
ãœãããŠã§ã¢è£œåã®èœåã é©åã«äœ¿çšãããœãããŠã§ã¢è£œåã®èœåã
å¹çæ§æšæº å¹çæ§ã«é¢é£ããèŠæ ŒãŸãã¯èŠçŽãéµå®ã
é©åæ§ ããœãããŠã§ã¢è£œåã®èœåã
åç®çæ§ æå®ãããäœæ¥åã³ å©çšè
ã®å
·äœç®æšã«
察ããŠé©åãªæ©èœã®éåãæäŸãããœãããŠ
ã§ã¢è£œåã®èœåã
æ£ç¢ºæ§ å¿
èŠãšããã粟床ã§ïŒæ£ããçµæè¥ããã¯æ£
ããå¹æïŒåã¯åæã§ããçµæè¥ããã¯åæ
ã§ããå¹æããããããœãããŠã§ã¢è£œåã®èœ
åã
ãœãããŠã§ã¢ãïŒæå®ããã
çžäºéçšæ§ äžã€ä»¥äžã®æå®ãããã·ã¹ãã ãšçžäºäœçšã
æ¡ä»¶ã®äžã§å©çšããããšã
æ© ããœãããŠã§ã¢è£œåã®èœåã
ã«ïŒæ 瀺 ç å ã³ æ 瀺 ç
èœ
å¿
èŠæ§ã«åèŽããæ©èœã ã»ãã¥ãªã㣠蚱å¯ãããŠããªã人åã¯ã·ã¹ãã ãæ
å ±åã¯
æ§
æäŸãããœãããŠã§ã¢è£œå ããŒã¿ãèªãã ãïŒä¿®æ£ãããããããšãã§ããª
ã®èœåã ãããã«ïŒåã³ èš±å¯ããã人åã¯ã·ã¹ãã ã
æ
å ±åã¯ããŒã¿ãžã®ã¢ã¯ã»ã¹ãæåŠãããªãã
ãã«ïŒæ
å ±åã¯ããŒã¿ãä¿è·ãããœãããŠã§ã¢
補åã®èœåïŒJIS X 0160:1996ïŒã
æ©èœæ§æšæº æ©èœæ§ã«é¢é£ããèŠæ ŒïŒèŠçŽåã¯æ³åŸäž
é©åæ§ åã³ é¡äŒŒã®æ³èŠäžã®èŠåãéµå®ãããœãã
ãŠã§ã¢è£œåã®èœåã
çè§£æ§ ãœãããŠã§ã¢ãç¹å®ã®äœæ¥ã«ç¹å®ã®å©çšæ¡ä»¶
ã§é©çšã§ãããã©ããïŒåã³ ã©ã®ããã«å©çšã§
ããããå©çšè
ãç解ã§ãããœãããŠã§ã¢è£œå
ã®èœåã
ç¿åŸæ§ ãœãããŠã§ã¢ã®é©çšãå©çšè
ãç¿åŸã§ãããœã
æå®ãããæ¡ä»¶ã®äžã§å©
䜿 ããŠã§ã¢è£œåã®èœåã
çš çšãããšãïŒç解ïŒç¿åŸïŒ
æ§ å©çšã§ãïŒå©çšè
ã«ãšã£ãŠ éçšæ§ å©çšè
ããœãããŠã§ã¢ã®éçšåã³ éçšç®¡ç
é
å ç 㧠ãã ãœãããŠã§ 㢠ãè¡ãããšãã§ãããœãããŠã§ã¢è£œåã®èœåã
補åã®èœåã é
åæ§ å©çšè
ã«ãšã£ãŠé
åçã§ããããã®ãœãããŠã§
ã¢è£œåã®èœåã
䜿çšæ§æšæº 䜿çšæ§ã«é¢é£ããèŠæ ŒïŒèŠçŽïŒã¹ã¿ã€ã«ã¬ã€
é©åæ§ ãåã¯èŠåãéµå®ãããœãããŠã§ã¢è£œåã®èœ
åã
7
8. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
2.2 å質ç¹æ§ãšäœæ³ïŒã«ãŒã«
æ¬ã¬ã€ãã§ã¯ïŒäœæ³ïŒã«ãŒã«ã 2.1 ã«ç€ºããïŒã€ã®å質ç¹æ§ã«é¢é£ã¥ããŠåé¡ã»æŽçããŠããŸããæ¬ã¬ã€ãã«ãããäœæ³ïŒ
ã«ãŒã«ã®æå³ã¯æ¬¡ã®ãšããã§ãïŒå³ 1 åç
§ïŒã
ã»äœæ³ ãœãŒã¹ã³ãŒãã®å質ãä¿ã€ããã®æ
£ç¿ïŒå®è£
ã®èãæ¹ã§ããïŒåã
ã®ã«ãŒã«ã®åºæ¬æŠå¿µã瀺ããäœæ³æŠèŠïŒ
äœæ³è©³çŽ°ã«éå±€åããŠç€ºããŠããã
ã»ã«ãŒã« å®ããªããã°ãªããªãïŒå
·äœçãªäžã€äžã€ã®æ±ºãäºã§ããïŒã³ãŒãã£ã³ã°èŠçŽãæ§æãããæ¬ã¬ã€ãã§ã¯ãªãã¡ã¬
ã³ã¹ãšããŠç€ºããŠããããªãïŒã«ãŒã«ã®éãŸããã«ãŒã«ãšåŒã¶ããšãããã
äœæ³ïŒã«ãŒã«ã®å€ãã¯ïŒè€æ°ã®å質ç¹æ§ãšé¢é£ããŸããïŒæãé¢é£ã®åŒ·ãç¹æ§ã«åé¡ããŠããŸããå質ç¹æ§ãšé¢é£ã¥ãã
ããšã«ããïŒåäœæ³ãã©ã®ãããªå質ã«åŒ·ã圱é¿ããããç解ã§ããããã«ããŠããŸãã
å ã³ãŒãå質å
質 äžã®ççŒç¹ ä¿¡é Œæ§ ä¿å®æ§ 移æ€æ§ å¹çæ§
æŠ (JIS X0129-1)
念
å質åäžã®ã ããã°ã©ã ã¯æ瀺ç
äœ ãã«å®ãã¹ã ã«èšè¿°ãã
æ³ å
·äœçãªå®è£
èšèªç¬ç«
åäœãä¿èšŒããã æå³çããããããã 移æ€ãæèãã
ã®èãæ¹ èšè¿°ãè¡ã èšè¿°ããã èšè¿°ããã
ïŒäžéšäŸåïŒ
ãªãã¡ã¬ã³ã¹ãšããŠæäŸ
æµ®åå°æ°ç¹å€æ°ã¯å³å¯ãªçåŒã åŒã®å€ã¯ãèŠæ Œãèªããã©ã®ãããªé åºã§
èšèªäŸåæ§ã éçåŒã®ãã¹ããããŠã¯ãªããªã è©äŸ¡ãããããšãåãã§ãªããã°ãªããªã èšèªäŸå
ã« èæ
®ããå
·äœ
㌠çãªã³ãŒã㣠åé
æŒç®åâ-â ã¯ç¬Šå·ãªãã® é èœãããŠããæµ®åå°æ°ç¹ã®ãããè¡šçŸã¯ã
åŒã«é©çšããŠã¯ãªããªã ããã°ã©ãã¯ããããªãæ¹æ³ã§ã䜿çšããŠã¯ãªããªã
ã« ã³ã°ã«ãŒã«ã®
ãªãã¡ã¬ã³ã¹ ãã倧ããªããŒã¿åã®äžéšåã«ã¢ã¯ã»ã¹ãã
ããã«å
±çšäœã䜿çšããŠã¯ãªããªã
äœæ³ã¬ã€ãã
åã®ã³ãŒãã£ã³ã°èŠçŽ åèã«ããŠäœæ
æµ®åå°æ°ç¹å€æ°ã¯å³å¯ãªçåŒã åŒã®å€ã¯ãèŠæ Œãèªããã©ã®ãããªé åºã§
éçåŒã®ãã¹ããããŠã¯ãªããªã è©äŸ¡ãããããšãåãã§ãªããã°ãªããªã
åé
æŒç®åâ-â ã¯ç¬Šå·ãªãã® é èœãããŠããæµ®åå°æ°ç¹ã®ãããè¡šçŸã¯ã
åŒã«é©çšããŠã¯ãªããªã ããã°ã©ãã¯ããããªãæ¹æ³ã§ã䜿çšããŠã¯ãªããªã
ãã倧ããªããŒã¿åã®äžéšåã«ã¢ã¯ã»ã¹ãã
ããã«å
±çšäœã䜿çšããŠã¯ãªããªã
å³ 1 å質æŠå¿µïŒäœæ³ïŒã«ãŒã«ã®é¢ä¿
8
9. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
3. æ¬ã¬ã€ãã®å©çšæ¹æ³
æ¬ã¬ã€ãã¯ïŒã³ãŒãã£ã³ã°èŠçŽäœææ¯æŽãç®çãšãïŒæ¬¡ã®ïŒéãã®å©çšæ¹æ³ãæ³å®ããŠããŸãã
1. æ°èŠã³ãŒãã£ã³ã°èŠçŽã®äœæ
2. æ¢åã³ãŒãã£ã³ã°èŠçŽã®å
å®
3. ããã°ã©ãã®ç ä¿®ïŒç¬ç¿ã®ããã®åŠç¿ææ
以äžïŒããããã®å©çšæ¹æ³ã説æããŸãã
3.1 æ°èŠã³ãŒãã£ã³ã°èŠçŽã®äœæ
ã³ãŒãã£ã³ã°èŠçŽã®ååšããªããããžã§ã¯ããïŒæ¬æžãçšããŠæ°èŠã«ã³ãŒãã£ã³ã°èŠçŽãäœæããå Žåã®æé ã瀺ããŸãã
(1) äœæææ
ã³ãŒãã£ã³ã°èŠçŽã¯ïŒããã°ã©ã èšèšã«å
¥ãåãŸã§ã«äœæããŸããã³ãŒãã£ã³ã°èŠçŽã¯ïŒã³ãŒãã£ã³ã°æã«åç
§ããã«ãŒã«ã®
éãŸãã§ããïŒé¢æ°åã®åœåèŠçŽãªã©ããã°ã©ã èšèšã«é¢ããã«ãŒã«ããããŸãããã®ããïŒããã°ã©ã èšèšä»¥åã«äœæãã
å¿
èŠããããŸãã
(2) äœææ¹æ³
次ã®é åºã§äœæããŸãã
1. ã³ãŒãã£ã³ã°èŠçŽã®äœææ¹éã決å®
2. 決å®ããäœææ¹éã«æ²¿ã£ãŠã«ãŒã«ãéžæ
3. ã«ãŒã«ã®ãããžã§ã¯ãäŸåéšåãå®çŸ©
ãã®ããšïŒå¿
èŠã«å¿ããŠïŒã«ãŒã«ãè¿œå ããŠäžãã
1. äœææ¹éã®æ±ºå®
ã³ãŒãã£ã³ã°èŠçŽäœæã«ããã£ãŠã¯ïŒãŸãïŒã³ãŒãã£ã³ã°èŠçŽã®äœææ¹éã決å®ããŸããã³ãŒãã£ã³ã°èŠçŽã®äœææ¹éãš
ã¯ïŒãããžã§ã¯ããäœæãããœãããŠã§ã¢ããããžã§ã¯ããæ§æãã人ã®ç¹æ§ãªã©ããïŒãã®ãããžã§ã¯ãã§äœæãããã³ãŒãã
ã©ã®ãããªã³ãŒãã®æžãæ¹ãšãªã£ãŠããã¹ããã瀺ãæ¹éã®ããšã§ããäŸãã°ïŒå®å
šæ§ãéèŠãïŒäŸ¿å©ã§ãã£ãŠãå±éºãªæ©
èœã¯äœ¿çšããªããšããæžãæ¹ã«ããã®ãïŒå±éºãªæ©èœã§ãã£ãŠã泚æããŠäœ¿çšããçšåºŠã®æžãæ¹ã«ããããªã©ãïŒãã®æ¹
éã«ããããŸãããªãïŒæ¹éã®æ±ºå®ã«ããã£ãŠã¯ïŒãããžã§ã¯ãã§éèŠãããå質ç¹æ§ å㳠次ã«ç€ºãèŠç¹ãèæ
®ããŠäž
ããã
ã»ãã§ãŒã«ã»ãŒããèæ
®ããã³ãŒãã£ã³ã°
ã»ããã°ã©ã ãèŠãããããã³ãŒãã£ã³ã°
ã»ãããã°ãèæ
®ããã³ãŒãã£ã³ã°
ãªã©
2. ã«ãŒã«ã®éžæ
ã«ãŒã«ã¯ïŒ1.ã§æ±ºå®ããèŠçŽäœæã®æ¹éã«åŸãïŒéžæããŸããäŸãã°ïŒç§»æ€æ§ãéèŠããæ¹éãšããå ŽåïŒç§»æ€æ§
ã«è©²åœããã«ãŒã«ãå€ãéžã¶ãªã©ã®å·¥å€«ãããŠäžããã
æ¬ã¬ã€ãã®ïŒïŒã«ç€ºãã«ãŒã«ãªãã¡ã¬ã³ã¹ã§ã¯ïŒèŠçŽãšããŠæ¡çšããªããšãã®ã«ãŒã«ãå±ããå質ç¹æ§ãèããæãªããšè
ããããã«ãŒã«ã«ã€ããŠãéžææéãæ¬ã®âã§ç€ºããŠããŸããäžæ¹ïŒèšèªä»æ§ãçç¥ããŠãã人ã«ã¯ãããŠèŠçŽã«ããå¿
èŠããªããšæãããã«ãŒã«ã«ã€ããŠâ³ã§ç€ºããŠããŸãã ãããåèã«ã«ãŒã«ãéžæããŠäžãããã«ãŒã«éžæã®æã簡䟿ãª
æ¹æ³ã¯ïŒâãã€ããŠããã«ãŒã«ã®ã¿ãéžæããããšã§ããããã«ããïŒããäžè¬çãªã«ãŒã«ãéžæã§ããŸãã
9
10. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
3. ãããžã§ã¯ãäŸåéšåã®å®çŸ©
æ¬ã¬ã€ãã®ã«ãŒã«ã«ã¯ïŒæ¬¡ã®ïŒçš®é¡ã®ã«ãŒã«ããããŸãã
AïŒ èŠçŽãšããŠãã®ãŸãŸäœ¿ããã«ãŒã«
BïŒ ææžåã«ããïŒèŠå®ããå¿
èŠã®ããã«ãŒã«(ãæãå°ã®ã«ãŒã«)
CïŒ ãããžã§ã¯ãã®ç¹æ§ã«ããããŠïŒã©ã®ã«ãŒã«ãšãããéžæããå¿
èŠã®ããã«ãŒã«ïŒãç¹ãå°ã«ãŒã«ïŒ
B, C ã®ã«ãŒã«ã¯ïŒãã®ãŸãŸã§ã¯ã«ãŒã«ãšããŠå©çšã§ããŸãããB ã®ã«ãŒã«ãæ¡çšããå ŽåïŒã4.3 ã«ãŒã«å®çŸ©ã®æéããšä»
é²ãææžåãã³ãã¬ãŒãããåèã«ïŒã«ãŒã«ãèŠå®ããŠææžåããŠäžãããC ã®ã«ãŒã«ãæ¡çšããå ŽåïŒæ瀺ãããŠããè€æ°
ã®ã«ãŒã«ããïŒããããã®ã«ãŒã«ãéžæããŠäžããã
3.2 æ¢åã³ãŒãã£ã³ã°èŠçŽã®å
å®
æ¬ã¬ã€ãã¯ïŒã³ãŒãã£ã³ã°èŠçŽãæ¢ã«ååšãããããžã§ã¯ãã«å¯ŸããŠã¯ïŒæ¢åã®ã³ãŒãã£ã³ã°èŠçŽãããã«å
å®ãããã®ãšãã
ããã®åèæžãšããŠå©çšã§ããŸãã
(1) æãã»æŒãã®é²æ¢
æ¬ã¬ã€ãã®äœæ³æŠå¿µãçšããŠïŒæ¢åã®ã³ãŒãã£ã³ã°èŠçŽãã«ããŽã©ã€ãºããããšã«ããïŒæããŠãã芳ç¹ãå
å®ããããïŒèª
ãããžã§ã¯ããäœã«éç¹ã眮ããŠäœæ¥ããŠãããåèªèããããšãã§ããŸãã
(2) ã«ãŒã«ã®å¿
èŠæ§ã®æ確å
æ¬ã¬ã€ãã®äœæ³ãšã«ãŒã«ã®é©åäŸïŒïŒ£èšèªã§ã®æ³šæäºé
ãå©çšããããšã§ïŒçç±ããããã匷å¶ãããŠããèŠåã®å¿
èŠ
æ§ãèªèããããã®ããŒã«ãšããŠå©çšã§ããŸãã
3.3 ããã°ã©ãã®ç ä¿®ïŒç¬ç¿ã®ããã®åŠç¿ææ
æ¬ã¬ã€ãã¯ïŒïŒ£èšèªã¯äžå¿å匷ãããïŒå®éã®ã³ãŒãã£ã³ã°ã«ã¯äžæ
£ãïŒçµéšãæµ
ããªã©ã®ããã°ã©ãã«ãšã£ãŠæ Œå¥œã®åŠç¿
ææãšãªããŸãã
ã»å¯Ÿè±¡è
ã»ïŒ£èšèªãäžéãåŠç¿ããããã°ã©ã
ã»ä»èšèªã§ã®ããã°ã©ãã³ã°çµéšã¯ãããïŒïŒ£èšèªã䜿ãã®ã¯åããŠãšããããã°ã©ã
ã»åŠç¿ã§ããããš
ä¿¡é Œæ§ã»ä¿å®æ§ã»ç§»æ€æ§ãªã©ã®èŠ³ç¹ããåé¡ãããæ¬ã¬ã€ããèªãããšã«ããïŒæ¬¡ã®ãããªããšãåŠç¿ã§ããŸãã
ã»ä¿¡é Œæ§ãé«ãããã³ãŒãã£ã³ã°æ¹æ³
ã»ãã°ãäœã蟌ãŸãªãããã«ããã³ãŒãã£ã³ã°æ¹æ³
ã»ãããã°ã»ãã¹ãããæãããã«ããã³ãŒãã£ã³ã°æ¹æ³
ã»ä»äººãèŠãŠïŒèŠãããããã«ããã³ãŒãã£ã³ã°æ¹æ³ãšãã®å¿
èŠæ§
ãªã©
10
11. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
4. äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹
æ¬ç« ã§ã¯ïŒ ã³ãŒãã£ã³ã°æã«ããã°ã©ããå®ãã¹ãäœæ³ãšïŒãã®äœæ³ã«å¯Ÿå¿ããå
·äœçãªã«ãŒã«ããªãã¡ã¬ã³ã¹ãšããŠç€ºããŸ
ãã4.1 ç¯ã§ïŒã4.2 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹ãã®è¡šã®èŠæ¹ãšè¡šäžã§äœ¿çšããŠããçšèªã説æããŸãã4.2 ç¯ã«ãäœæ³ãšã«ãŒã«
ãªãã¡ã¬ã³ã¹ãã瀺ãïŒ4.3 ç¯ã§ïŒã«ãŒã«ãè£è¶³èª¬æããŸãã
4.1 è¡šã®èŠæ¹ãšçšèª
æ¬ç¯ã§ã¯ïŒã4.2 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹ãã®èŠæ¹ãšïŒè¡šäžã§å©çšããŠããçšèªã説æããŸãã
4.1.1 è¡šã®èŠæ¹
ã4.2 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹ãã®è¡šã®åã
ã®æ¬ãšãã®æå³ã¯æ¬¡ã®éãã§ãã
(1) (2) (3) (4) (5) (6) (7) (8)
å äœæ³ éž èŠ é¢é£
質 ã«ãŒã«
ã«ãŒã« C èšèªã§ã®æ³šæäºé
æ çŽ ïŸïœ°ïŸ
æŠ No. æ å
念 æŠèŠ 詳现 é
No.
(1) å質æŠå¿µ ãJIS X 0129-1ãã®äž»å質ç¹æ§ã«é¢é£ä»ããå質æŠå¿µã
æ¬æžã§ã¯ä»¥äžã®ïŒã€ã®å質æŠå¿µã䜿çšã
â ä¿¡é Œæ§ â ä¿å®æ§ â 移æ€æ§ â å¹çæ§
(2) äœæ³ ã³ãŒãã£ã³ã°æã«ããã°ã©ããå®ãã¹ãäœæ³ã
â æŠèŠ äœæ³ã®åºãæ¬ããæŠå¿µçã«å®çŸ©ã èšèªã«éäŸåã
â 詳现 æŠå¿µçãªäœæ³ã詳现åãããå
·äœçã«æ°ãä»ããã¹ãäœæ³ãæŠèŠåæ§ïŒåº
æ¬çã«ã¯èšèªéäŸåã§ãããïŒäžéšãC èšèªãã®ç¹æ§ã«ããäœæ³åãããŠã
ããã®ããã
(3) ã«ãŒã« No. ã«ãŒã«ã®çªå·ã
(4) ã«ãŒã« äœæ³ã«å¯Ÿå¿ããå
·äœçã«å®ããªããã°ãããªã C èšèªçšã®ã«ãŒã«ããªãã¡ã¬ã³ã¹ãšããŠç€ºããŠã
ãããªãïŒãã®æ¬ã®ã«ãŒã«ãæç®ã®åŒçšã§ããå ŽåïŒæ¬¡ã®åœ¢åŒã§ç€ºããŠããã
ãïŒåŒçšæç®ã瀺ãç¥èªïŒ ïŒçªå·ïŒã
ïŒåŒçšæç®ã瀺ãç¥èªïŒ
- MISRA : MISRA-C:2004 ã®ããš
- ãã®ä»ã¯æ€èšäž
äŸïŒ ãMISRA 1.3ã
(5) C èšèªã§ã®æ³šæäºé
C èšèªä»æ§äžã®æ³šæäºé
ãªã©ïŒã«ãŒã«ã®å¿
èŠæ§ïŒã«ãŒã«éåæã«çããåé¡ãªã©ã説æ
ããŠããã
(6) éžå®æé æ¬ã¬ã€ããçšããŠã³ãŒãã£ã³ã°èŠçŽãäœæããéã®ã«ãŒã«ã®éžå®æéã
ããŒã¯ç¡ã ãããžã§ã¯ãã®ç¹æ§ã«åãããŠéžæããã°ãããšæãããã«ãŒã«ã
â³ èšèªä»æ§ãçç¥ããŠãã人ã«ã¯ãããŠèŠçŽã«ããå¿
èŠããªããšæããã
ã«ãŒã« (çµéšã®ããããã°ã©ãã«ã¯åœããåãªããš)ã
â å®ããªããšèããå質ç¹æ§ãæãªããšèããããã«ãŒã«ã
(7) èŠçŽå 察象ã«ãŒã«ãïŒãããžã§ã¯ãããšã®æéã«ãã£ãŠè©³çŽ°ãå®ããå¿
èŠããããç¡ããã瀺ãã
ããŒã¯ç¡ã 詳现ãå®ããå¿
èŠãªãããã®ãŸãŸèŠçŽãšããŠå©çšã§ããã
æ ææžåããããžã§ã¯ãããšã«ã«ãŒã«ãèŠå®ãïŒææžåããå¿
èŠããããèŠå®ããã¹
ãéšåã¯ïŒïŒ ïŒïŒ ã§å²ã¿æ瀺ããŠããã
ç¹ éžæãè€æ°ã®ã«ãŒã«ãæ瀺ãããŠããïŒãã®äžããéžæããå¿
èŠãããã
éžæè¢ã¯ïŒæ¬åŒ§ä»ãæ°å((1),(2),...ãšãã圢åŒ)ã§ç€ºããŠããã
(8) é¢é£ã«ãŒã«ïŒ®ïœïŒ åœè©²ã«ãŒã«ã«é¢é£ããã«ãŒã« Noã
11
12. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
4.1.2 è¡šäžã®çšèª
æ¬ç¯ã§ã¯ïŒã4.3 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹ãã§äœ¿çšããçšèªã説æããŸãã
çšèª 説æ
ã¢ã¯ã»ã¹ å€æ°ã®åç
§åã³ æŽæ°ãå«ãåç
§ã®ããšã
ããŒã¿ã®åãæå®ãããã®ãcharïŒintïŒfloat ãªã©ã®åºæ¬çãªåãæå®ãããã®ãšïŒããã°
åæå®å
ã©ããç¬èªã« typedef ã§å®çŸ©ããåãæå®ãããã®ã
åã«ç¹å®ã®æ§è³ªãä»ãå ãããã®ã次㮠2 ã€ãããã
å修食å
constïŒvolatile
ããŒã¿ãèšæ¶ãããå Žæãæå®ãããã®ã次㮠4 ã€ãããã
èšæ¶ã¯ã©ã¹æå®å
autoïŒregisterïŒstaticïŒextern
ã³ã³ãã€ã©ãããŒã¿ãã¡ã¢ãªã«é
眮ãããšãã®æ¹æ³ã瀺ãã
å¢çèª¿æŽ äŸãã°ïŒint åã 2 ãã€ãã®å ŽåïŒå¿
ãã¡ã¢ãªã®å¶æ°ã¢ãã¬ã¹ããé
眮ããããã«ãïŒå¥æ°ã¢
ãã¬ã¹ããé
眮ããªãããã«ããããšã
â??=âïŒâ??/âïŒâ??(â ã®ããã«æ±ºããããïŒæåãã³ã³ãã€ã©ãç¹å®ã® 1 æåã«è§£éãã
3 æåè¡šèš æåè¡šèšã®ããšã
â??=âïŒâ??/âïŒâ??(â ã¯ããããïŒâ#âïŒââïŒâ[â ã«å€æãããã
çåæé å€æ°ãçæãããŠããïŒããã°ã©ã ããã®åç
§ãä¿èšŒãããŠããæéãããã
2 ãã€ã以äžã®ããŒã¿ã§è¡šçŸãããæåã挢åïŒã²ãããªãªã©ã®å
šè§æåãïŒUnicode ã§
å€ãã€ãæå
è¡šçŸãããæåãªã©ãããã
ãã«ãã€ã³ã¿ ãããªãããŒã¿ïŒé¢æ°ãžã®ãã€ã³ã¿ãšæ¯èŒããŠãçãããªããã€ã³ã¿ã
ãã«æå æååã®æåŸãè¡šçŸããæåãâ0âã§è¡šçŸãããã
ãã¡ã€ã«ã¹ã³ãŒã æå¹ç¯å²ãïŒãã¡ã€ã«ã®çµãããŸã§ã§ããããšã
å®è¡ç°å¢ã®ç¶æ
ã«å€åãèµ·ããåŠçã次ã®åŠçã該åœããã
å¯äœçš volatile ããŒã¿ãžã®ã¢ã¯ã»ã¹ïŒããŒã¿ã®å€æŽïŒãã¡ã€ã«ã®å€æŽïŒåã³ ãããã®æäœãè¡ã
é¢æ°åŒåºãã
ããã㯠ããŒã¿å®£èšïŒããã°ã©ã ãªã©ã§æ³¢æ¬åŒ§â{âïŒâ}âã§å²ãã ç¯å²ãããã
æå¹ç¯å² å€æ°ãªã©ã䜿çšã§ããç¯å²ã®ããšãã¹ã³ãŒããšãããã
åæå enum åãããã€ãã®åæãããã¡ã³ãã§æ§æãããã
åæå åæåïŒenum åïŒã®ã¡ã³ãã®ããšã
12
13. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
4.2 äœæ³ãšã«ãŒã«ãªãã¡ã¬ã³ã¹
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
1. é å㯠é åã¯ïŒåæåã 1.1 èªåå€æ°ã¯å®£èšæã«åæåããããŸã㯠èªåå€æ°ãåæåããªããšïŒãã®å€ã¯äžå®
ä¿¡ åæåãïŒ ãŠãã䜿çšããã 䜿çšããçŽåã«åæå€ã代å
¥ããã ãšãªãïŒåäœãç°å¢ã«ãã£ãŠæŒç®çµæãç°ãª
倧ããïŒç ïŒé©åäŸïŒ ãçŸè±¡ãçºçãããåæåã®ã¿ã€ãã³ã°ã¯å®£
é Œ åæéã«æ° void func() { èšæïŒãŸãã¯äœ¿çšããçŽåãšãããïŒäœ¿çšã
int var1 = 0; /* 宣èšæã«åæåãã
ãã€ããŠäœ¿ ãçŽåã®åæåã¯æ£ç¢ºã«ã¯ä»£å
¥ã§ããïŒ
*/
æ§ çšããã int i; C++ã§ã¯åæåãšä»£å
¥ã¯æå³ãç°ãªãã®ã§
var1++; 泚æãå¿
èŠïŒã
/* 䜿çšããçŽåã«åæå€ã代å
¥ */
for (i=0; i < 10; i++) â³
{ /* ⊠*/ }
}
ïŒäžé©åäŸïŒ
void func() {
int var1;
var1++;
/* ⊠*/
}
1.2 const åå€æ°ã¯ïŒå®£èšæã«åæåããã const åå€æ°ã¯åŸãã代å
¥ãã§ããªãã®ã§ïŒ
ïŒé©åäŸïŒ 宣èšæã«åæåãã¹ãã§ãããåæåããª
const int N = 10; ããšå€éšå€æ°ã®å Žå㯠0ïŒèªåå€æ°ã®å Žå
ïŒäžé©åäŸïŒ ã¯ãäžå®ãšãªãã®ã§ïŒæå³ããªãåäœãšãªã
const int N; å¯èœæ§ãããã宣èšæã«æªåæåã§ãã³ã³ â³
ãã€ã«ãšã©ãŒã«ãªããªãããïŒæ³šæãå¿
èŠã§
ãã(C++ã§ã¯ const ã®æªåæåã¯ãšã©ãŒãšãª
ã)ã
åæåã¯éäžè¶³ 1.3 èŠçŽ æ°ãæå®ããé
åã®åæåã§ã¯ïŒå é
åãæååã§åæåããéã«ïŒé
åã®
ç¡ãããšããããã æå€ã®æ°ã¯ïŒæå®ããèŠçŽ æ°ãšäžèŽãã 倧ãããšããŠãã«æååã確ä¿ãããšã宣èš
ãã«èšè¿°ããã ãã æã«ã¯ãšã©ãŒã«ãªããªããæå³ããèšè¿°ã§ã
ïŒé©åäŸïŒ ãã°åé¡ãªããïŒæååæäœé¢æ°çã®åŒ
char var[] = "abc"; æ°ãšããŠäœ¿çšãããšæååã®æåŸã瀺ãã â³
ãŸã㯠ã«æåããªãããïŒæå³ããªãåäœãšãªãå¯
char var[4] = "abc"; èœæ§ãé«ããæååã®åæåã®éã«ã¯ïŒ
ïŒäžé©åäŸïŒ æåŸã®ãã«æååãŸã§ç¢ºä¿ããå¿
èŠãã
char var[3] = "abc"; ãã
1.4 åæå(enum å)ã®ã¡ã³ãã®åæåã¯ïŒå® åæåã®ã¡ã³ãã«åæå€ãæå®ããªãå Ž
æ°ãå
šãæå®ããªãïŒå
šãŠæå®ããïŒå㯠åïŒçŽåã®ã¡ã³ãã®å€ã« 1 ãå ããå€ã«ãªã
æåã®ã¡ã³ãã ããæå®ããïŒã®ãããããš (æåã®ã¡ã³ãã®å€ã¯ 0)ãåæå€ãæå®ãã
ããã ãïŒæå®ããªãã£ãããããšïŒäžçšæã«åãå€
ãMISRA 9.3ã ãå²ãåœãŠãŠããŸãïŒæå³ããªãåäœãšãªã
ïŒé©åäŸïŒ å¯èœæ§ãããã䜿ãæ¹ã«ãäŸåãããïŒã¡ã³
/* E1 ãã E4 ã«ã¯ç°ãªãå€ãå²ãä»ããã ãã®åæåã¯ïŒæå 1 ã€ã ãã«è¡ããïŒå
šã
ã */ è¡ããªããã®ã©ã¡ããã«ãïŒåãå€ãå²ãæ¯ã
enum etag { E1=9, E2, E3, E4 };
ããã®ãé²æ¢ããæ¹ãããã
enum etag var1;
var1 = E3;
/* var1 ã«å
¥ãã E3 ãš E4 ãçãããªãããš
ã¯ãªã */
if (var1 == E4 )
ïŒäžé©åäŸïŒ
enum etag { E1, E2=10, E3, E4=11 };
enum etag var1;
var1 = E3;
/* var1 ã«ã¯ E3 ãå
¥ãã E4 ãšãçããçãš
ãªãã®ã§ïŒåããé£ã */
if (var1 == E4 )
13
14. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
ãã€ã³ã¿ã®æŒç®ã 1.5 (1) ãã€ã³ã¿ãžã®æŽæ°ã®å æžç®(++,--ãå« ãã€ã³ã¿ã«å¯ŸããæŒç®ãè¡ããšãã€ã³ã¿ã®æã
è¡ãå Žåã«ã¯ïŒã ãïŒã¯äœ¿çšããïŒç¢ºä¿ããé åãžã®åç
§ã» ãŠããå
ãã©ããªã®ããåããé£ãããåå ãš
ã€ã³ã¿ã®æãç¯å² 代å
¥ã¯[ ]ãçšããé
å圢åŒã§è¡ãã ãªããããªãã¡ïŒç¢ºä¿ããŠããªãé åãåç
§
ã«æ°ãä»ããã (2) ãã€ã³ã¿ãžã®æŽæ°ã®å æžç®(++,--ãå« ãããïŒé åã«æžã蟌ãã ããããã°ãåã
ãïŒã¯ïŒãã€ã³ã¿ãé
åãæããŠããå Žåã 蟌ãå¯èœæ§ãé«ããªããé åã®å
é ãæã
ããšãïŒçµæã¯ïŒé
åã®ç¯å²å
ãæããŠã ãŠããé
ååã䜿ã£ãé
åã®æ·»ãåã«ããïŒ
ãªããã°ãªããªãã é
åèŠçŽ ãã¢ã¯ã»ã¹ããæ¹ãïŒå®å
šãªããã°
ã©ã ãšãªãã
ïŒé©åäŸïŒ ãªãïŒ(2)ã®ã«ãŒã«ã«ãããŠïŒãã€ã³ã¿ã¯ïŒãã®
#define N 10 ãã€ã³ã¿ãçšããŠé
åèŠçŽ ã«ã¢ã¯ã»ã¹ããªã
int data[N]; éãïŒé
åã®æåŸã®èŠçŽ ãäžã€è¶ãããšãã
int i; ãæããŠããããããªãã¡ïŒint arr[MAX]ïŒ ç¹
i = 1; p=arr ãšããŠïŒp+MAX ã¯é©åããŠããïŒ
data[i] = 10; /* OK */ *(p+MAX)ã¯äžé©åã§ããã
data[i+3] = 20; /* OK */
ïŒäžé©åäŸïŒ
#define N 10
int data[N];
int *p;
p = data;
*(p + 1) = 10; /* NG */
p += 2; /* NG */
*p = 20;
1.6 ãã€ã³ã¿å士ã®æžç®ã¯ïŒåãé
åã®èŠçŽ ã C èšèªã§ã¯ïŒãã€ã³ã¿å士ã®æžç®ãè¡ã£ãå Ž
æããã€ã³ã¿ã«ã®ã¿äœ¿çšããã åïŒåãã€ã³ã¿ãæããŠããèŠçŽ ã®éã«å¹Ÿã€
ãMISRA 17.2ã èŠçŽ ãæãããæ±ãŸãããã®æïŒåãã€ã³ã¿
ïŒé©åäŸïŒ ãå¥é
åãæããŠãããšïŒãã®éã«ã©ã®ãããª
int off, var1[10]; å€æ°ãã¬ã€ã¢ãŠãããããã¯ïŒã³ã³ãã€ã©äŸå
int *p1, *p2; ã§ããïŒå®è¡çµæã¯ä¿èšŒãããªãããã®ãã
p1 = &var1[5]; ã«ãã€ã³ã¿å士ã®æžç®ã¯ïŒåãé
åå
ã®èŠ
p2 = &var1[2]; çŽ ãæããŠããå Žåã®ã¿æå³ããããåŸã£ â³
off = p1 - p2; /* OK */ ãŠïŒãã€ã³ã¿æžç®ãè¡ãå Žåã«ã¯ïŒåãé
å
ïŒäžé©åäŸïŒ ãæããŠãããã€ã³ã¿å士ã§ããããšãããã°ã©
int var1[10], var2[10], off; ãã確èªããŠè¡ãå¿
èŠãããã
int *p1, *p2;
p1 = &var1[5];
p2 = &var2[2];
off = p1 - p2; /* NG */
1.7 ãã€ã³ã¿å士ã®æ¯èŒã¯ïŒåãé
åã®èŠçŽ ïŒ ç°ãªãå€æ°ã®ã¢ãã¬ã¹æ¯èŒãããŠãã³ã³ãã€ã«
ãŸãã¯åãæ§é äœã®ã¡ã³ããæããã€ã³ã¿ã« ãšã©ãŒã«ãªããªããïŒå€æ°ã®é
眮ã¯ã³ã³ãã€ã©
ã ã䜿çšããã äŸåãªã®ã§æå³ã®ç¡ãæ¯èŒãšãªãããŸãïŒã
ãMISRA 17.3ã ã®ãããªæ¯èŒã®åäœã¯ïŒå®çŸ©ãããŠããªã
ïŒé©åäŸïŒ ïŒæªå®çŸ©ã®åäœïŒã
#define N 10
char var1[N];
void func(int i, int j) {
if (&var1[i] < &var2[j]) { â³
/* ... */
ïŒäžé©åäŸïŒ
#define N 10
char var1[N];
char var2[N];
void func(int i, int j) {
if (&var1[i] < &var2[j]) {
/* ... */
14
15. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
解æŸããé åã㢠1.8 èªåå€æ°é åã¯é¢æ°çµäºåŸã¯äœ¿çšã㪠èªåå€æ°é åãé¢æ°çµäºåŸã«äœ¿çšããå Ž
ã¯ã»ã¹ããªãã ãã åïŒãã®é åã¯ä»ã®çšéã«äœ¿çšãããå¯èœ
ïŒé©åäŸïŒ æ§ãããããïŒä»ã®é åãç Žå£ããããšãã
extern int data1;
extern int data2; ãã
int *func(tag *p) {
p->mem = &data1; /* éçãªé
åã®ã¢ãã¬ã¹ãªã OK */
return &data2; /* éçãªé å
ã®ã¢ãã¬ã¹ãªã OK */
}
...
tag y;
int *p;
p = func(&y);
*p = 10; /* OK */
*y.mem = 20; /* OK */
ïŒäžé©åäŸïŒ â³
int *func(tag *p) {
int x;
p->mem = &x; /* é¢æ°åŸ©åž°åŸã«
èªåå€æ°é åãåç
§ãããŠããŸã(å±éº)
*/
return &x; /* é¢æ°åŸ©åž°åŸã«èªå
å€æ°é åãåç
§ãããŠããŸã(å±éº) */
}
...
tag y;
int *p;
p = func(&y);
*p = 10; /* äžåœãªé åã
ç Žå£ */
*y.mem = 20; /* äžåœãªé åãç Žå£
*/
1.9 解æŸããé åã«ã¢ã¯ã»ã¹ããªã åçã«ç²åŸããé åã解æŸåŸã«äœ¿çšãã
ïŒé©åäŸïŒ å ŽåïŒãã®é åã¯ä»ã®çšéã«äœ¿çšãããå¯
struct stag { /* ãªã¹ãæ§é ã®æ§é äœ èœæ§ãããããïŒä»ã®é åãç Žå£ããããšã
*/
struct stag *st_next; ããã
...
}
struct stag *st1; /* ãªã¹ãæ§é ã®ãã€ã³
ã¿ */
struct stag *top; /* ãªã¹ãæ§é ã®å
é
ãã€ã³ã¿ */
struct stag *next; /* 次ã®ãªã¹ãæ§é ã®
ãã€ã³ã¿ */
...
for (st1 = top ;st1 != NULL; st1 = next) {
next = st1->st_next;
free(st1);
}
ïŒäžé©åäŸïŒ â³
struct stag { /* ãªã¹ãæ§é ã®æ§é äœ */
struct stag *st_next;
...
}
struct stag *st1; /* ãªã¹ãæ§é ã®ãã€ã³ã¿
*/
struct stag *top; /* ãªã¹ãæ§é ã®å
é ã
ã€ã³ã¿ */
...
/* ãªã¹ãæ§é ã®æ§é äœãé 次解æŸããåŠ
ç */
/* 解æŸåŸïŒfor æã® 3 ã€ç®ã®å¶åŸ¡åŒã§è§£
æŸãããã€ã³ã¿ã«ã¢ã¯ã»ã¹ããŠããã®ã§ïŒNG
*/
for (st1 = top; st1 != NULL; st1 =
st1->st_next) {
free(st1);
}
15
16. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
2. ããŒã¿ã¯ å
éšè¡šçŸã«äŸå 2.1 æµ®åå°æ°ç¹åå€æ°ã¯å³å¯ãªçåŒïŒéç æµ®åå°æ°ç¹åã¯ïŒèŠãç®ã®å€ãšå®è£
ããã
ç¯å²ïŒå€§ã ããªãæ¯èŒãè¡ åŒã®æ¯èŒã¯ããªãã å€ã¯å®å
šã«äžèŽããŠããªãã®ã§ïŒæ¯èŒã¯èš±
ãïŒå
éšè¡š ãã ãMISRA 13.3ã 容誀差ãèæ
®ããŠå€å®ããå¿
èŠãããã
çŸã«æ°ãä» ïŒé©åäŸïŒ
ããŠäœ¿çšã #define LIMIT 1.0e-4
ãã void func(double d1, double d2) {
double diff = d1-d2; â³
if (-LIMIT <= diff && diff <= LIMIT) {
/* ⊠*/
ïŒäžé©åäŸïŒ
void func(double d1, double d2) {
if (d1 == d2) {
/* ⊠*/
2.2 æµ®åå°æ°ç¹åå€æ°ã¯ã«ãŒãã«ãŠã³ã¿ãšã㊠浮åå°æ°ç¹åã¯ïŒã«ãŒãã«ãŠã³ã¿ãšããŠæŒç®
䜿çšããªãã ãç¹°ãè¿ããããšïŒèª€å·®ã环ç©ãïŒæå³ãã
ãMISRA 13.4ã çµæãåŸãããªãããšãããããã®ããïŒã«ãŒ
ïŒé©åäŸïŒ ãã«ãŠã³ã¿ã«ã¯æŽæ°åã䜿çšãã¹ãã§ããã
void func() {
int i;
for (i=0; i < 10; i++) { â³
/* ⊠*/
ïŒäžé©åäŸïŒ
void func() {
double d;
for (d=0.0; d < 1.0;d += 0.1) {
/* ⊠*/
2.3 æ§é äœãå
±çšäœã®æ¯èŒã« memcmp ã䜿 æ§é äœãå
±çšäœã®ã¡ã¢ãªã«ã¯ïŒæªäœ¿çšã®é
çšããªãã åãå«ãŸããå¯èœæ§ãããïŒãã®é åã«äœ
ïŒé©åäŸïŒ ãå
¥ã£ãŠãããåãããªãã®ã§ïŒmemcmp ã¯
struct { 䜿çšãã¹ãã§ãªããæ¯èŒããããªãïŒã¡ã³ã
char c; å士ã§è¡ãå¿
èŠãããããŸãïŒæ§é äœã®ã¡ã³
long l; ãã®è©°ãç©ïŒå¢ç調æŽã¯åŠçç³»å®çŸ©ã§ã
} var1, var2; ãã
void func() {
if (s1.a == s2.a && s1.b == s2.b) {
/* âŠ*/ â³
ïŒäžé©åäŸïŒ
struct {
char c;
long l;
} var1, var2;
void func() {
if (memcmp(var1, var2, sizeof(var1))
== 0) {
/* ⊠*/
16
17. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
çã®å€ãšçããã 2.4 çåœã®çµæãçãšããŠå®çŸ©ããå€ãšçãã ç㯠0 ã§ãªããšããæå³ã§ããïŒ1 ãšã¯éããª
ã©ããã調ã¹ãŠã¯ãª ãã©ããã調ã¹ãŠã¯ãããªããå€å®ããå Žå ãã
ããªãã ã¯ïŒåœ(0)ãšçãããªããã©ããã調ã¹ãã
ïŒé©åäŸïŒ
typedef int bool;
#define FALSE 0
bool func1(void);
void func2() {
if (func1() != FALSE) {
ïŒäžé©åäŸïŒ
typedef int bool;
#define TRUE 1
bool func1(void);
void func2() {
if (func1() == TRUE) {
ããŒã¿åãæãã 2.5 笊å·ç¡ãæŽæ°å®æ°åŒã¯ïŒçµæã®åã§è¡šçŸ int ã®ãããæ°ãç°ãªããšïŒåãå®æ°åŒã§ãïŒ
æŒç®ãæ¯èŒãè¡ ã§ããç¯å²å
ã§èšè¿°ããã æŒç®çµæããã®åã§è¡šçŸã§ããç¯å²ãè¶
ã
ãã ãMISRA 12.11ã ãå Žåãšè¶
ããªãå Žåã§åäœãç°ãªãç¶æ³
ïŒé©åäŸïŒ ãçºçããã
#define M 0xffffUL
if ((M+1) > M)
/* long ã 32bit ã§ããã°ïŒint ã® bit æ°ãé
ã£ãŠãåé¡ãªã */
ïŒäžé©åäŸïŒ
#define M 0xffffU
if ((M+1) > M)
/* int ã 16bit ã®å Žåãš 32bit ã®å Žåã§å
äœãéã */
2.6 æ¡ä»¶æŒç®å(?:æŒç®å)ã§ã¯ïŒè«çåŒã¯æ¬ åãç°ãªãèšè¿°ãè¡ã£ãå Žåã¯ïŒçµæã¯ã©
匧ã§å²ã¿ïŒè¿ãå€ã¯ 2 ã€ãšãåãåã«ããã ã¡ãã®åãæåŸ
ããŠããããæ瀺ããããã«
ïŒé©åäŸïŒ ãã£ã¹ããè¡ãã
void func(int i1, int i2, long l1) {
i1 = (i1 > 10) ? i2 : (int)l1;
ïŒäžé©åäŸïŒ
void func(int i1, int i2, long l1) {
i1 = (i1 > 10) ? i2 : l1;
2.7 ã«ãŒãã«ãŠã³ã¿ãšã«ãŒãç¶ç¶æ¡ä»¶ã®æ¯èŒã«äœ¿ å€ã®è¡šçŸã§ããç¯å²ãéãå€æ°ã®æ¯èŒãã«
çšããå€æ°ã¯ïŒåãåã«ããã ãŒãã®ç¶ç¶æ¡ä»¶ã«äœ¿çšãããšïŒæå³ããçµ
ïŒé©åäŸïŒ æã«ãªããïŒç¡éã«ãŒãã«ãªãå Žåãããã
void func(int arg) {
int i;
for (i = 0; i < arg; i++) { â³
ïŒäžé©åäŸïŒ
void func(int arg) {
short i;
for (i = 0; i < arg; i++) {
17
18. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
åãç°ãªãå€æ° 2.8 æŒç®ã®åãšæŒç®çµæã®ä»£å
¥å
ã®åãç°ãª æŒç®ã®åã¯æŒç®ã«äœ¿çšããåŒã®åã«ãã£ãŠ
å士ã§æŒç®ãã ãå Žåã¯ïŒæåŸ
ããæŒç®ç²ŸåºŠã®åãžãã£ã¹ 決ãŸãïŒä»£å
¥å
ã®åã¯èæ
®ãããªããæŒç®
å Žåã¯ïŒæŒç®ç²Ÿ ãããŠããæŒç®ããã ã®åãšä»£å
¥å
ã®åãç°ãªãå ŽåïŒå€ãã¯ïŒ
床ãèæ
®ããèšè¿° ïŒé©åäŸïŒ 代å
¥å
ã®åã®ç²ŸåºŠã®æŒç®ãæåŸ
ããŠããã
ã«ããã int i1, i2; ãã®ããïŒæåŸ
ããåã«ãã£ã¹ãããŠããæŒç®
long l; ããå¿
èŠãããã
double d;
void func() {
d = (double)i1 / (double)i2; /* æµ®åå°
æ°ç¹åã§ã®é€ç® */ â³
l = ((long)i1) << i2; /* long ã§ã®ã·ãã
*/
ïŒäžé©åäŸïŒ
int i1, i2;
long l;
double d;
void func() {
d = i1 / i2; /* æŽæ°åã§ã®é€ç® */
l = i1 << i2; /* int ã§ã®ã·ãã */
2.9 笊å·ä»ãã®åŒãšç¬Šå·ç¡ãã®åŒã®æ··åšãã 倧å°æ¯èŒïŒä¹é€ç®ãªã©ïŒæŒç®ã笊å·ä»ãã§
ç®è¡æŒç®ïŒæ¯èŒãè¡ãå Žåã¯ïŒæåŸ
ãã è¡ããïŒç¬Šå·ç¡ãã§è¡ããã«ãã£ãŠçµæãç°
åã«æ瀺çã«ãã£ã¹ãããã ãªãæŒç®ãããã笊å·ä»ãïŒç¬Šå·ç¡ããæ··
ïŒé©åäŸïŒ åšããŠèšè¿°ããå ŽåïŒã©ã¡ãã§è¡ãããã
long l; ã¯ïŒããããã®ããŒã¿ã®ãµã€ãºãèæ
®ããŠæ±º
unsigned int ui; å®ãããããïŒåžžã«ç¬Šå·ç¡ãã§è¡ããããšã¯
void func() { éããªãããã®ããïŒæ··åšããç®è¡æŒç®ãè¡
l = l / (long)ui;
ãå Žåã¯ïŒæåŸ
ããæŒç®ã 笊å·ä»ãã笊
ãŸãã¯
l = (unsigned int)l / ui; å·ç¡ããã確èªãïŒæåŸ
ããæŒç®ã«ãªããã
ã«ïŒæ瀺çã«ãã£ã¹ãããå¿
èŠãããããŸãïŒ
if (l < (long)ui) { ãã£ã¹ãããã®ã§ãªãïŒäœ¿çšããããŒã¿åãå€
ãŸã㯠æŽããæ¹ãããå Žåãããã
if ((unsigned int)l < ui) {
ïŒäžé©åäŸïŒ
long l;
unsigned int ui;
void func() {
l = l / ui;
if(l < ui) {
/* ⊠*/
é¢æ°ã®ïŒå®£èšãšäœ¿ 2.10 é¢æ°åŒåºããšé¢æ°å®çŸ©ã®åã§é¢æ°ã®ãã ãããã¿ã€ã宣èšãååšãããšïŒã³ã³ãã€ã©ã§
çšã®æŽåæ§ããšã ãã¿ã€ã宣èšãããã æŽåæ§ã®ãã§ãã¯ãè¡ãããã(C++ã§ã¯å¿
é
ããŠããããšãïŒã³ ïŒé©åäŸïŒ ã§ãã)
ã³ãã€ã©ããã§ãã¯ã§ /* stdio.h ã®äžã« é¢æ° puts ã®ãããã¿ã€ã
ããæžãæ¹ã«ããã 宣èšããã */
#include <stdio.h>
void main() { â
puts(" hello");
}
ïŒäžé©åäŸïŒ
void main() {
puts(" hello");
}
2.11 åŒæ°ãæããªãé¢æ°ã¯ïŒåŒæ°åã void ãšã int func(); ã¯ïŒåŒæ°ããªãé¢æ°ã®å®£èšã§ã¯
ãã ãªãïŒæ§åŒã®å®£èšã§åŒæ°ã®æ°ãšåãäžæãš
ãMISRA 16.5ã ããæå³ã§ãããåŒæ°ããªãé¢æ°ã宣èšã
ïŒé©åäŸïŒ ãå Žå㯠void ãæèšããã â
int func(void);
ïŒäžé©åäŸïŒ
int func();
18
19. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
æ
å ±æ倱ã®å±éº 2.12 æ
å ±æ倱ãèµ·ããå¯èœæ§ã®ããããŒã¿åãž å€ããã®åãšç°ãªãåã®å€æ°ã«ä»£å
¥ãããšïŒ
ã®ããæŒç®ã¯äœ¿çš ã®ä»£å
¥(ïŒæŒç®ïŒé¢æ°åŒã³åºãã®å®åŒæ° å€ãå€ããïŒæ
å ±æ倱ããïŒå¯èœæ§ãããã
ããªãã䜿çšãã æž¡ãïŒé¢æ°åŸ©åž°)ãè¡ãå Žåã¯ïŒåé¡ã㪠å¯èœã§ããã°ä»£å
¥å
ã¯åãåãšããã®ãã
å Žåã¯åé¡ã®ãªã ãããšã確èªãïŒåé¡ããªãããšãæ瀺ãã ããæ
å ±æ倱ã®æãã¯ãªãïŒåã¯æ倱ããŠ
ããšãæ瀺ããã ããã«ãã£ã¹ããèšè¿°ããã ããããªã©ïŒæå³çã«ç°ãªãåãžä»£å
¥ãã
ïŒé©åäŸïŒ å Žåã¯ïŒãã®æå³ãæ瀺ããããã«ãã£ã¹ã
short s; ãèšè¿°ããã
long l; äœãïŒãã£ã¹ããèšè¿°ããããïŒä»£å
¥å
ã®ããŒ
void func() { ã¿åãèŠçŽãæ¹ãããå Žåãå€ãããšã«æ³š â
s = (short)l; æããã
s = (short)(s+1);
ïŒäžé©åäŸïŒ
short s;
long l;
void func() {
s = l;
s = s+1;
2.13 åé
æŒç®å'-' ã¯ç¬Šå·ç¡ãã®åŒã«äœ¿çšã 笊å·ç¡ãã®åŒã«åé
'-'ã䜿çšããããšã§ïŒ
ãªãã æŒç®çµæãå
ã®ç¬Šå·ç¡ãã®åã§è¡šçŸã§ã
ãMISRA 12.9ã ãç¯å²å€ã«ãªã£ãå ŽåïŒäºæããªãåäœãš
ïŒé©åäŸïŒ ãªãå¯èœæ§ãããã
int i;
void func() { â³
i = -ïœ;
ïŒäžé©åäŸïŒ
unsigned int ui;
void func() {
ui = -ui;
2.14 unsigned char å å㯠unsigned short unsigned char å㯠unsigned short ã®æŒç®
åã®ããŒã¿ããããå転(~)ãããïŒå·Šã·ãã çµæ㯠signed int ãšãªããæŒç®ã«ãã£ãŠïŒ
(<<)ããå ŽåïŒçµæã®åã«æ瀺çã«ãã£ã¹ 笊å·ãããããªã³ã«ãªããšïŒæåŸ
ããæŒç®çµ
ãããã æã«ãªããªãå Žåãããããã®ããïŒæåŸ
ã
ãMISRA 10.5ã ãæŒç®ã®åãžã®ãã£ã¹ããæ瀺ããã
ïŒé©åäŸïŒ
unsigned char uc; â
void func() {
u = (unsigned char)(~uc) >> 1;
ïŒäžé©åäŸïŒ
unsigned char uc;
void func() {
u = (~uc) >> 1;
2.15 ãããåãšããŠäœ¿çšããããŒã¿ã¯ïŒç¬Šå·ä»ã 笊å·ä»ãåã®ãããåäœã®æŒç®ïŒ ~, <<, >>,
åã§ã¯ãªãïŒç¬Šå·ç¡ãåã§å®çŸ©ããã &, ^, | ïŒãè¡ã£ãçµæã¯åŠçç³»å®çŸ©ã§ã
ãã
ïŒé©åäŸïŒ
unsigned int flags;
void set_x_on() {
flags |= 0x01;
ïŒäžé©åäŸïŒ
signed int flags;
void set_x_on() {
flags |= 1;
19
20. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
察象ããŒã¿ãè¡šçŸ 2.16 ããããã£ãŒã«ãã«äœ¿çšããå㯠signed int 笊å·æå®ã®ãªã int ãããããã£ãŒã«ãã«äœ¿çš
å¯èœãªåãäœ¿çš ãš unsinged int ã ããšãïŒ1 ãããå¹
ã®ãããã ããå ŽåïŒç¬Šå·ä»ãïŒç¬Šå·ç¡ãã®ã©ã¡ãã§äœ¿
ããã ã£ãŒã«ããå¿
èŠãªå Žå㯠singed int åã§ãª çšããããã¯åŠçç³»å®çŸ©ã§ããããã®ããïŒ
ãïŒunsigned int åã䜿çšããã 笊å·æå®ã®ãªã int åã¯ããããã£ãŒã«ãã«ã¯
ãMISRA 6.4, 6.5ã
ïŒé©åäŸïŒ 䜿çšããªãããŸãïŒã³ã³ãã€ã©ããµããŒãããŠã
struct S { ãŠãïŒchar,short,long ã®åãããããã£ãŒã«ã
signed int m1:2; ã«äœ¿çšããããšã¯ C90 ã®ä»æ§å€ã§ããã®
ãŸã㯠ã§ïŒç§»æ€æ§ãèæ
®ããå Žåã¯äœ¿çšãã㪠â
unsigned int m1:1; ãããŸãïŒ1 ãããã® signed int ã®ããããã£ãŒã«
};
ïŒäžé©åäŸïŒ ããè¡šçŸã§ããå€ã¯-1 ãš 0 ã®ã¿ãšãªãã®ã§ïŒ1
struct S { ãããã®ããããã£ãŒã«ãã«ã¯ unsigned int ã䜿
signed int m1:1; çšããã
int m2:1;
char m3:1;
};
ãã€ã³ã¿ã®åã«æ°ã 2.17 (1) ãã€ã³ã¿åã¯ïŒä»ã®ãã€ã³ã¿åãæŽæ°å ãã€ã³ã¿åã®å€æ°ãä»ã®ãã€ã³ã¿åã«ãã£ã¹ã
ä»ããã ã«å€æããŠã¯ãªããªãããŸãïŒéãè¡ã£ãŠã¯ ã代å
¥ãããšïŒãã€ã³ã¿ã®æãå
ã®é åãïŒ
ãªããªããããŒã¿ãžã®ãã€ã³ã¿åã«ã€ããŠã¯ïŒ ã©ã®ãããªããŒã¿ãªã®ããåããé£ããªãã
void*åãšã®å€æã¯å¯ãšããã CPU ã«ãã£ãŠã¯ïŒã¯ãŒãå¢çãæããªããã€ã³
(2) ãã€ã³ã¿åã¯ïŒä»ã®ãã€ã³ã¿åã«å€æã ã¿ã䜿ã£ãŠãã€ã³ã¿ã®æãå
ã int åã§ã¢ã¯ã»
ãŠã¯ãªããªãããã€ã³ã¿åã®ããŒã¿å¹
以äžã® ã¹ããŠããŸããšïŒå®è¡æãšã©ãŒãçºçãããã®
æŽæ°åãšã®å€æã¯å¯ãšããããŸãïŒããŒã¿ãž ãããïŒãã€ã³ã¿ã®æãå
ãïŒããã°ã©ããå
ã®ãã€ã³ã¿åã«ã€ããŠã¯ïŒvoid*åãšã®å€æ æã«å€æŽããŠããŸããšïŒæãã¬ãã°ã«ãªãå±
ã¯å¯ãšããã éºãããããã€ã³ã¿åã®å€æ°ã¯ïŒä»ã®ãã€ã³ã¿
(3) ãã€ã³ã¿åã¯ïŒãã€ã³ã¿åã®ããŒã¿å¹
以 åã«ãã£ã¹ãã代å
¥ããªãæ¹ãå®å
šã§ããã
äžã®æŽæ°åãšã®å€æã¯å¯ãšãããé¢æ°ãžã® ãã€ã³ã¿åãæŽæ°åã«å€æããããšãïŒåè¿°
ãã€ã³ã¿åã¯ïŒæŽæ°å以å€ã®åãšã®å€æ㯠ã®åé¡ãšåãå±éºæ§ãããïŒå¿
èŠãªå Žå
äžå¯ãšãããããŒã¿ãžã®ãã€ã³ã¿åã¯ïŒä»ã® ã¯ïŒçµéšè
ã亀ããã¬ãã¥ãŒãå¿
èŠã§ããã
ããŒã¿ãžã®ãã€ã³ã¿åãšã®å€æãå¯ãšããã ããã«ïŒint åã®æ±ãå€ã®ç¯å²ãšãã€ã³ã¿åã®
ïŒé©åäŸïŒ æ±ãå€ã®ç¯å²ã«å¯Ÿãã泚æãå¿
èŠã§ããã
int *ip; int åãµã€ãºã 32 ãããã«ãé¢ãããïŒãã€ã³ã¿
void *vp; åãµã€ãºã 64 ããããšããããšãããã®ã§ïŒäº
int n; åã«ïŒã³ã³ãã€ã©ã®ä»æ§ã確èªããŠããã â ç¹
n = (int)ip; /* 2 ãš 3 ã®ã«ãŒã«ã«
OK */
ip = (int*)vp; /* OK */
vp = (void*)ip; /* OK */
ïŒäžé©åäŸïŒ
int *ip;
int (*fp)(void);
float f;
char data[10];
fp = ip; /* NG */
f = ip; /* NG */
ip = (int*)&data[1]; /* 1 ãš 2 ã®ã«ãŒã«ã«
NG */
*ip = 0; /* CPU ã«ãã£ãŠã¯å®è¡ãšã©ãŒã
çºç */
20
21. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
2.18 const ã volatile 修食ãããé åãæãã const ã volatile 修食ãããé åã¯ïŒåç
§ã
ã€ã³ã¿ã«å¯ŸãïŒconst ã volatile 修食ãåã ããããªãé åã§ãã£ããïŒæé©åãããŠã¯
é€ããã£ã¹ãã¯ããŠã¯ãªããªãã ãªããªãé åãšããããšã§ïŒãã®é åã«å¯Ÿãã
ãMISRA 11.5ã ã¢ã¯ã»ã¹ã«æ³šæããªããã°ãªããªãããããã®
ïŒé©åäŸïŒ é åãæããã€ã³ã¿ã«å¯ŸãïŒconst ã volatile
void func(const char *); ãåãé€ããã£ã¹ããè¡ã£ãŠããŸããšïŒåè¿°ã®æ³š
const char *str; æé
ç®ãèŠããªããªãïŒã³ã³ãã€ã©ã¯ïŒããã°ã©
void x() { ã ã®èª€ã£ãèšè¿°ã«å¯ŸãïŒäœããã§ãã¯ã§ããªã
func(str);
ãªãã â
/* ⊠*/
}
ïŒäžé©åäŸïŒ
void func(char *);
const char *str;
void x() {
func((char*)str);
/* ⊠*/
}
3 .ç°åžžå€ã é åã®å€§ãããæ 3.1 é
åãé 次ã«ã¢ã¯ã»ã¹ããã«ãŒãã®ç¶ç¶æ¡ C èšèªã®åé¡ã§ã¯ãªãïŒé åå€ãã¢ã¯ã»ã¹ã
èæ
®ããæž èããæžãæ¹ã«ã 件ã«ã¯ïŒé
åã®ç¯å²å
ã§ãããã®å€å®ãå
¥ ãªãããã«ããããã®ã«ãŒã«ã§ããã
ãæ¹ã«ããã ãã ããã
ïŒé©åäŸïŒ
char var1[MAX];
for (i = 0; i < MAX && var[i] != 0; i++)
{ /* var1 é
åã« 0 ãæªèšå®ã®å Žåã§ãïŒ
é
åã®ç¯å²å€ã¢ã¯ã»ã¹ã®å±éºç¡ */
/* ⊠*/
ïŒäžé©åäŸïŒ
char var1[MAX];
for (i = 0; var[i] != 0; i++) { /* var1 é
å
ã« 0 ãæªèšå®ã®å ŽåïŒé
åã®ç¯å²å€ã¢ã¯
ã»ã¹ã®å±éºæ */
/* ⊠*/
3.2 (1) é
åã® extern 宣èšã®èŠçŽ æ°ã¯å¿
ãæ é
åã®å€§ãããçç¥ã㊠extern 宣èšããå Ž
å®ããã åïŒãšã©ãŒã«ã¯ãªããªãããããïŒé
åã®ç¯å²
(2) èŠçŽ æ°ãçç¥ãããåæåä»ãé
å å€ã®ãã§ãã¯ãããšãã«å€§ãããçç¥ãããŠã
å®çŸ©ã«å¯Ÿå¿ããé
åã® extern 宣èšãé€ã ããšïŒãã§ãã¯ã«æ¯éãçºçããå Žåãããã
é
åã® extern 宣èšã®èŠçŽ æ°ã¯å¿
ãæå® ãã®ããïŒé
åã®å€§ããã¯æ瀺ããŠå®£èšãã
ããã æ¹ãããããã ãïŒåæå€ã®åæ°ã§é
åã®
ïŒé©åäŸïŒ 倧ããã決å®ãïŒäžæã«å€§ããã決ãŸããªã
extern int var1[MAX]; å Žåãªã©ã¯ïŒå®£èšæã®é
åã®å€§ãããçç¥
... ããæ¹ãããå Žåãããã
for ( i = 0; i < MAX; i++ ) { /* é
åã®
â ç¹
ç¯å²ãè¶
ããŠããªãããšãæ確 */
var1[i] = i ;
}
ïŒäžé©åäŸïŒ
extern int var1[];
...
for ( i = 0; i < MAX; i++ ) { /* é
åã®
ç¯å²ãè¶
ããŠãããäžæ確 */
var1[i] = i ;
}
21
22. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
3.3 ã¡ã¢ãªæäœãè¡ãé¢æ°ã䜿çšããå ŽåïŒé
é åå€ãã¢ã¯ã»ã¹ãããšïŒæå³ããªãçµæã
åã®ç¯å²ãè¶
ããŠã¢ã¯ã»ã¹ããªãå€ãæž¡ãã åŒãèµ·ããå Žåããããç°ãªããµã€ãºã®é å
ïŒé©åäŸïŒ ãåŒæ°ã«æå®ããå Žåã¯ïŒããŒã¿åãèŠçŽ
#define N 20 ããŠåããµã€ãºã«æãããïŒå°ããªæ¹ã®ãµã€ãº
char var1[N]; ãæå®ããå¿
èŠãããããŸãïŒãµã€ãºãäžç¹
char var2[N]; å®ã®é åãæäœããå¯èœæ§ãããé¢æ°ã«
void func2(char*, char *,int n); ã¯ïŒåŒæ°ã«ãµã€ãºãæå®ããããã«ããã
void func() {
memcpy(var1, var2, sizeof(var2));
func2(var1,var2,sizeof(var2)); â³
ïŒäžé©åäŸïŒ
#define A 10
#define B 20
char var1[A];
char var2[B];
void func2(char*, char*);
void func1() {
memcpy(var1, var2, sizeof(var2));
func2(var1, var2);
å®è¡æãšã©ãŒã«ãª 3.4 é€ç®ãå°äœç®ã®å³èŸºåŒã¯ïŒ0 ã§ãªãã®ã確 æããã« 0 ã§ãªãå Žåãé€ãïŒé€ç®ãå°äœ
ãå¯èœæ§ã®ããæŒ èªããŠããæŒç®ãè¡ãã ç®ã®å³èŸºã 0 ã§ãªãããšã確èªããŠããæŒç®
ç®ã«å¯ŸããŠã¯ïŒãšã© ïŒé©åäŸïŒ ãããããããªãå ŽåïŒå®è¡æã« 0 é€ç®ã®ãš
ãŒã±ãŒã¹ãè¿åã if (y != 0) ã©ãŒãçºçããå¯èœæ§ãããã â
ããããã«ãã§ãã¯ã ans = x/y;
ãã ïŒäžé©åäŸïŒ
ans = x/y;
3.5 ãã€ã³ã¿ã¯ïŒãã«ãã€ã³ã¿ã§ãªãããšã確èªã
ãŠãããã€ã³ã¿ã®æãå
ãåç
§ããã
ïŒé©åäŸïŒ
if (p != NULL)
*p = 1;
ïŒäžé©åäŸïŒ
*p = 1;
é¢æ°ãç°åžžãè¿ 3.6 é¢æ°ããšã©ãŒæ
å ±ãè¿ãå ŽåïŒé¢æ°ã®åŸ©
ãå¯èœæ§ãããå Ž åž°å€ã確èªãïŒç°åžžæã®åŠçãè¡ãã
åã¯ïŒç°åžžå€ãã ãMISRA 16.10ã
ã§ãã¯ããã ïŒé©åäŸïŒ
p = malloc(BUFFERSIZE);
if (p == NULL)
/* ç°åžžåŠç */ â
else
*p = ¥0;
ïŒäžé©åäŸïŒ
p = malloc(BUFFERSIZE);
*p = ¥0;
é¢æ°ã®ãã©ã¡ã¿ãšã 3.7 é¢æ°ã«æž¡ãåŒæ°ã«å¶éãããå ŽåïŒé¢æ°
ãŠæž¡ããŠã¯ãªããªã åŒã³åºãããåã«ïŒå¶éå€ã§ãªãããšã確
å¶éå€ãããå Ž èªããŠããé¢æ°åŒã³åºãããã
åã¯ïŒå¶éå€ãæž¡ ïŒé©åäŸïŒ
ããªãããã«ïŒãã§ã if ((MIN <= para) && (para <= MAX))
ã¯ããã ret = func(para);
ïŒäžé©åäŸïŒ
ret = func(para);
22
23. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
å€å²åå²åŠçã« 3.8 if-else if æã¯ïŒæåŸã«å¿
ã else ç¯ã眮ãã else ç¯ããªããšïŒelse ç¯ãæžãå¿ããŠããã®
ãããŠïŒæå®ã®æ¡ éåžžïŒElse æ¡ä»¶ãçºçããªãããšããã㣠ãïŒelse ç¯ãçºçããªã if-else if æãªã®ã
件以å€ãçºçã ãŠããå Žåã¯ïŒæ¬¡ã®ããããã®èšè¿°ãšããã ãããããªããªãã
ãå Žåã®åŠçã (i) else ç¯ã«ã¯ïŒäŸå€çºçæã®åŠçãèšè¿° éåžžïŒelse æ¡ä»¶ãçºçããªãããšãããã£ãŠ
èšè¿°ããŠããã ããã ããå Žåã§ã次ã®ããã« else ç¯ãæžãããšã«ã
(ii) else ç¯ã«ã¯ïŒ/* DO NOTHING */ãšã ã£ãŠæ³å®å€ã®æ¡ä»¶ãçºçããå Žåã®ããã°
ãã³ã¡ã³ããå
¥ããã ã©ã ã®åäœãäºæž¬ããããšãã§ããã
ã»else æ¡ä»¶ã«æ³å®å€ã®æ¡ä»¶ã«å¯Ÿããåäœ
ïŒé©åäŸïŒ ãèšè¿°ããã(äžãäžïŒelse æ¡ä»¶ãçºçãã
/* else æ¡ä»¶ãéåžžçºçããªãå Žåã® å Žåã®ãã°ã©ã ã®åäœã決ããŠãã)
if-else if æã® else ç¯ */ ãŸãïŒelse æ¡ä»¶ãçºçããªãã³ã¡ã³ããèšè¿°
if (var1 == 0) { ããã ãã§ãïŒããã°ã©ã ããããããããªãã
⊠ã»/* DO NOTHING */ã®ããã«ïŒelse æ¡ä»¶
} else if (0 < var1) { ãçºçããªãããšãæ瀺ããã³ã¡ã³ããèšè¿°
⊠ãïŒelse ç¯ã®æžãããã§ã¯ãªãããšãè¡šçŸã
} else { ãã
/* äŸå€åŠçãèšè¿°ãã */
⊠â
}
âŠ
if (var1 == 0) {
âŠ
} else if (0 < var1) {
âŠ
} else {
/* DO NOTHING */
}
ïŒäžé©åäŸïŒ
/* else ç¯ã®ãªã if-else if æ */
if (var1 == 0) {
...
} else if (0 < var1) {
âŠ
}
23
24. ã³ãŒãã£ã³ã°äœæ³ã¬ã€ã 0.8 ãã©ããç
éž èŠ é¢é£
å質 äœæ³ ïŸïœ°ïŸ æ çŽ ïŸïœ°ïŸ
æŠå¿µ No.
ã«ãŒã« Cèšèªã§ã®æ³šæäºé
æ
æŠèŠ 詳现 é å No.
3.9 switch æã¯ïŒå¿
ã default ç¯ã眮ãã default ç¯ããªããšïŒdefault ç¯ãæžãå¿ããŠ
éåžžïŒdefault æ¡ä»¶ãçºçããªãããšããã ããã®ãïŒdefault ç¯ãçºçããªã switch æ
ã£ãŠããå Žåã¯ïŒæ¬¡ã®ããããã®èšè¿°ãšã ãªã®ããããããªããªãã
ãã éåžžïŒdefault æ¡ä»¶ãçºçããªãããšããã
(i) default ç¯ã«ã¯ïŒäŸå€çºçæã®åŠçã ã£ãŠããå Žåã§ã次ã®ããã« default ç¯ãæžã
èšè¿°ããã ããšã«ãã£ãŠæ³å®å€ã®æ¡ä»¶ãçºçããå Žåã®
(ii) default ç¯ã«ã¯ïŒ/* DO NOTHING */ ããã°ã©ã ã®åäœãäºæž¬ããããšãã§ããã
ãšããã³ã¡ã³ããå
¥ããã ã»default æ¡ä»¶ã«æ³å®å€ã®æ¡ä»¶ã«å¯Ÿããå
ïŒé©åäŸïŒ äœãèšè¿°ããã(äžãäžïŒdefault æ¡ä»¶ãçº
/* default æ¡ä»¶ãéåžžçºçããªã switch çããå Žåã®ãã°ã©ã ã®åäœã決ããŠãã)
æã® default ç¯ */ ãŸãïŒdefault æ¡ä»¶ãçºçããªãã³ã¡ã³ããèš
switch(var1) { è¿°ããã ãã§ãïŒããã°ã©ã ããããããããª
case 0: ãã
⊠ã»/* DO NOTHING */ã®ããã«ïŒdefault æ¡
break; 件ãçºçããªãããšãæ瀺ããã³ã¡ã³ããèš
case 1: è¿°ãïŒdefault ç¯ã®æžãããã§ã¯ãªãããšãè¡š
⊠çŸããã
break;
default:
/* äŸå€åŠçãèšè¿°ãã */
âŠ
break;
} â
âŠ
switch(var1) {
case 0:
âŠ
break;
case 1:
âŠ
break;
default:
/* DO NOTHING */
break;
}
ïŒäžé©åäŸïŒ
/* default ç¯ã®ãªã switch æ */
switch(var1) {
case 0:
âŠ
break;
case 1:
âŠ
break;
}
ååž°åŒã³åºãã«ãª 3.10 å®è¡æã®å©çšã¹ã¿ãã¯ãµã€ãºãäºæž¬ã§ããª
ããããªé¢æ°åŒã³ ãããååž°åŒã³åºãé¢æ°ã¯äœ¿çšããªãã
åºããè¡ããªãã ãMISRA 16.2ã
24