gcc(gnu), clang(llvm)コンパイルエラー・警告比較(9) R_13_0x.c, docker(163) error(52)

やってきました。

gcc(gnu) clang(llvm)コンパイルエラー比較

長らくごぶさたしていました。

MISRA の解説書は有料ですが、Codeは無償であげてくれています。

MISRA C:2012 Example-Suite 
https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite

<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.
# 全体の記録

Misra Example Suite at docker コンパイル完了までの道のり
https://qiita.com/kaizen_nagoya/items/71f04a0204d5a1114577

順にコンパイルエラーが出たものを比較し、
エラーを取るのなら取ってみます。

-Wall でコンパイルしています。

R_13_0x.c

```
$ clang 
R_13_01_1.c:42:35: warning: multiple unsequenced modifications to 'x' [-Wunsequenced]
   use_arr ( ( uint16_t[ 2 ] ) { x++, x++ } );
                                  ^    ~~
1 warning generated.
R_13_02.c:39:20: warning: multiple unsequenced modifications to 'i' [-Wunsequenced]
   COPY_ELEMENT ( i++ );     /* Non-compliant - i is modified twice and also read  */
                   ^~
R_13_02.c:30:37: note: expanded from macro 'COPY_ELEMENT'
#define COPY_ELEMENT( index ) ( b[( index )] = c[( index )] )  /* violates D.4.9 */
                                    ^              ~~~~~
R_13_02.c:52:9: warning: unsequenced modification and access to 'i' [-Wunsequenced]
   f ( i++, i );            /* Non-compliant - order of evaluation unspecified     */
        ^   ~
2 warnings generated.
R_13_03.c:78:8: warning: expression result unused [-Wunused-value]
       *p++;
       ^~~~
1 warning generated.
R_13_04.c:36:18: warning: unsequenced modification and access to 'x' [-Wunsequenced]
   a[ x ] = a[ x = y ];                       /* Non-compliant - also breaks R.13.2 */
      ~          ^
R_13_04.c:41:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
   if ( bool_var = false )                    /* Non-compliant - also breaks R.14.3 */
        ~~~~~~~~~^~~~~~~
R_13_04.c:41:18: note: place parentheses around the assignment to silence this warning
   if ( bool_var = false )                    /* Non-compliant - also breaks R.14.3 */
                 ^
        (               )
R_13_04.c:41:18: note: use '==' to turn this assignment into an equality comparison
   if ( bool_var = false )                    /* Non-compliant - also breaks R.14.3 */
                 ^
                 ==
R_13_04.c:56:9: warning: unsequenced modification and access to 'b' [-Wunsequenced]
   a[ b += c ] = a[ b ];                     /* Non-compliant - also breaks R.13.2  */
        ^           ~
3 warnings generated.
R_13_06.c:45:15: warning: expression with side effects has no effect in an unevaluated context [-Wunevaluated-expression]
   s = sizeof ( j++ );            /* Non-compliant          */
              ^
1 warning generated.

$ gcc 
R_13_02.c: In function 'R_13_2':
R_13_02.c:39:20: warning: operation on 'i' may be undefined [-Wsequence-point]
   30 | #define COPY_ELEMENT( index ) ( b[( index )] = c[( index )] )  /* violates D.4.9 */
      |                                                  ~~~~~~~~~
......
   39 |    COPY_ELEMENT ( i++ );     /* Non-compliant - i is modified twice and also read  */
R_13_02.c:30:52: note: in definition of macro 'COPY_ELEMENT'
   30 | #define COPY_ELEMENT( index ) ( b[( index )] = c[( index )] )  /* violates D.4.9 */
      |                                                    ^~~~~
R_13_02.c:52:9: warning: operation on 'i' may be undefined [-Wsequence-point]
   52 |    f ( i++, i );            /* Non-compliant - order of evaluation unspecified     */
      |        ~^~
R_13_03.c: In function 'R_13_3':
R_13_03.c:78:8: warning: value computed is not used [-Wunused-value]
   78 |        *p++;
      |        ^~~~
R_13_04.c: In function 'R_13_4':
R_13_04.c:36:18: warning: operation on 'x' may be undefined [-Wsequence-point]
   36 |    a[ x ] = a[ x = y ];                       /* Non-compliant - also breaks R.13.2 */
      |                ~~^~~
R_13_04.c:41:9: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   41 |    if ( bool_var = false )                    /* Non-compliant - also breaks R.14.3 */
      |         ^~~~~~~~
R_13_04.c:56:9: warning: operation on 'b' may be undefined [-Wsequence-point]
   56 |    a[ b += c ] = a[ b ];                     /* Non-compliant - also breaks R.13.2  */
      |       ~~^~~~
In file included from clear_lib.c:10:
clear_lib.c: In function 'g':
clear_lib.c:266:6: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  266 |  PR1((int)p,d);
      |      ^
misra_c.h:66:54: note: in definition of macro 'PR1'
   66 | #define PR1(a,b) (void)printf(" "#a  " = %" #b "\n", a)
      |                                                      ^
clear_lib.c: In function 'use_const_volatile_char_ptr':
clear_lib.c:279:6: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  279 |  PR1((int)cv_cp,d);
      |      ^
misra_c.h:66:54: note: in definition of macro 'PR1'
   66 | #define PR1(a,b) (void)printf(" "#a  " = %" #b "\n", a)
      |                                                      ^
```
# docker hubでの作業
docker hubからの起動はこちら。

```
$ docker run it kaizenjapan/misra_c_2012_example /bin/bash
```

#参考資料

仮説・検証（173）C言語（C++)に対する誤解、曲解、無理解、爽快。

https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

[C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9
MISRA C まとめ #include 
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
どうやって MISRA Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00


ISO/IEC TS 17961:2013 C Secure Coding Rules(1) All list(to be confirmed)
https://qiita.com/kaizen_nagoya/items/54e056195c4f11b850a1

Autosar Guidelines C++14 example code compile list
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76

C++ N4741, N4606, N3242 Source Compile Error List
https://qiita.com/kaizen_nagoya/items/2e736e04339b340ffb4d

# 自己参照
Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
### 文書履歴(document history)
ver. 0.01 add URL　20240514
### 最後までおよみいただきありがとう4ざいました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.