gcc(gnu), clang(llvm)コンパイルエラー・警告比較(2) R_02_02.c。docker(156)


やってきました。
gcc(gnu) clang(llvm)コンパイルエラー比較

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

MISRA の解説書は有料ですが、Codeは無償であげてくれています。
MISRA C:2012 Example-Suite
https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite

全体の記録は

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

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

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

R_02_02.c


$ clang 
R_02_02.c:48:4: warning: expression result unused [-Wunused-value]
   ( int64_t ) v; /* Non-compliant - the cast operator is dead        */
   ^           ~
R_02_02.c:50:6: warning: expression result unused [-Wunused-value]
   v >> 3;        /* Non-compliant - the >> operator is dead          */
   ~ ^  ~
R_02_02.c:55:4: warning: expression result unused [-Wunused-value]
   *p1++;         /* Non-compliant - result of * operator is not used */
   ^~~~~
3 warnings generated.
R_02_03.c:23:20: warning: unused typedef 'local_Type' [-Wunused-local-typedef]
   typedef int16_t local_Type;   /* Non-compliant */
                   ^
1 warning generated.
R_02_06.c:23:1: warning: unused label 'label1' [-Wunused-label]
label1:   /* Non Compliant */
^~~~~~~~~~
1 warning generated.

$ gcc 
R_02_02.c: In function 'R_2_2':
R_02_02.c:50:6: warning: value computed is not used [-Wunused-value]
   50 |    v >> 3;        /* Non-compliant - the >> operator is dead          */
      |    ~~^~~~
R_02_02.c:55:4: warning: value computed is not used [-Wunused-value]
   55 |    *p1++;         /* Non-compliant - result of * operator is not used */
      |    ^~~~~
R_02_02.c:42:13: warning: variable 'x' set but not used [-Wunused-but-set-variable]
   42 |    uint16_t x;
      |             ^
R_02_03.c: In function 'unusedtype':
R_02_03.c:23:20: warning: typedef 'local_Type' locally defined but not used [-Wunused-local-typedefs]
   23 |    typedef int16_t local_Type;   /* Non-compliant */
      |                    ^~~~~~~~~~
R_02_06.c: In function 'R_2_6':
R_02_06.c:23:1: warning: label 'label1' defined but not used [-Wunused-label]
   23 | label1:   /* Non Compliant */
      | ^~~~~~

clangの方が警告が一個多い。

ソースコードは、URLにもdockerにもあります。

docker hubでの作業

docker hubからの起動はこちら。

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

参考資料

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

[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
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