はじめに(Introduction)
N3054 Working Draft, Standard for Programming Language C
http://www.open-std.org/jtc1/sc22/wg14/docs/papers/2022/n3054.pdf
最新は CN3096
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf
C++ Nxxxxは、ISO/IEC JTC1 SC22 WG14の作業原案(Working Draft)です。
公式のISO/IEC 9899原本ではありません。
ISO/IEC JTC1 SC22 のWG14を含むいくつかのWGでは、可能な限り作業文書を公開し、幅広い意見を求めています。
ISO/IEC JTC1 SC7からISO/IEC JTC1 SC22リエゾンとして、2000年頃、C/C++の品質向上に貢献しようとした活動をしていたことがあります。その頃は、まだISO/IEC TS 17961の原案が出る前です。Cの精神が優勢で、セキュリティ対策は補助的な位置付けでした。ISO/IEC TS 17961の制定と、C/C++のライブラリ類の見直しと、C++の進化はどんどん進んでいきます。
進化の具合が、どちらに行こうとしているかは、コンパイルて実行させてみないとわからないかもしれません。C/C++の規格案の電子ファイルは、そのままコンパイルできる形式であるとよいと主張してきました。MISRA-C/C++, CERTC/C++でも同様です。MISRA-C/C++は、Example Suiteという形で、コード断片をコンパイルできる形で提供するようになりました。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(gcc, clang)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C/C++, MISRA C/C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, 箱庭プロジェクト、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。
<この項は書きかけです。順次追記します。>
背景(back ground)
C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。
過去に何度か、自分のネットでの記録に助けられたことがあります。
https://stackoverflow.com
また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。
作業方針(sequence)
clangでは--std=c11, -std=C17 -std=c2xの3種類
gccでは-std=c11, -std=C17 -std=c2xの3種類
でコンパイルし、
1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。
1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。
$ docker run -v /Users/ogawakiyoshi/n4910/n3540:/Users/ogawakiyoshi/n4910/n3540 -it kaizenjapan/n3540 /bin/bash
読書感想文
CコンパイラによるC言語規格の読書感想文として掲載しています。
コンパイル実験が、CN3242に対する、gccとclangによる感想文だということご理解いただけると幸いです。
読書感想文は人間かAIだけが作るものとは限りません。
本(電子書籍を含む)を入力として、その内容に対する文字列を読書感想文として受け止めましょう。
元の文章をあり方、コンパイルできるように電子化しておくこと、コンパイラが解釈可能な断片の作り方など。
https://qiita.com/tags/読書感想文
個人開発
Cコンパイラの試験を一人でもくもくとやっているのは個人開発の一つの姿です。
https://qiita.com/tags/個人開発
一覧
文法派 対 写経派 CN3054を題材に
https://qiita.com/kaizen_nagoya/items/445ebc1939f0034ee038
-
Terms, definitions, and symbols CN3054:2022 (1) p3.c
https://qiita.com/kaizen_nagoya/items/3b7ee0a87766f822e9b8 -
Conformance CN3054:2022 (2) p8.c
https://qiita.com/kaizen_nagoya/items/cd74bd8080291b6fd3e7 -
Environment CN3054:2022 (3) p10.c
https://qiita.com/kaizen_nagoya/items/e22a6ba69ec3079c73ef -
Language 6.2 Concepts CN3054:2022 (4) p34.c
https://qiita.com/kaizen_nagoya/items/082da75afc7559700bbe
6.3 Conversions CN3054:2022 (5) p45.c
https://qiita.com/kaizen_nagoya/items/2be4b0bc44acda96c541
6.4 Lexical elements CN3054:2022 (6) p51.c
https://qiita.com/kaizen_nagoya/items/043503ea1cbe689cbec1
6.5 Expressions, CN3054:2022 (7) p71.c
https://qiita.com/kaizen_nagoya/items/963b98d368569be817bd
6.6 Constant expressions, CN3054:2022 (8) p94.c
https://qiita.com/kaizen_nagoya/items/4fbf54d314b65de76552
6.7 Declarations, CN3054:2022 (9) p96.c
https://qiita.com/kaizen_nagoya/items/5aa0d35f7ede6deb27c1
6.8 Statements and blocks, CN3054:2022 (10) p152.c
https://qiita.com/kaizen_nagoya/items/936d040a927f40c39a1a
6.9 External definitions, CN3054:2022 (11) p159.c
https://qiita.com/kaizen_nagoya/items/aa2cb491c6f4d34845d3
6.10 Preprocessing directives, CN3054:2022 (12) p163.c
https://qiita.com/kaizen_nagoya/items/b6ad2c00f2f70447c9fa
- Library 7.1 Introduction, CN3054:2022 (13) p193.c
https://qiita.com/kaizen_nagoya/items/7c55e9ce69e8518c916b
7.2 Diagnostics , CN3054:2022 (14) p195.c
https://qiita.com/kaizen_nagoya/items/8e5469e5612bf39b7aef
7.3 Complex arithmetic , CN3054:2022 (15) p197.c
https://qiita.com/kaizen_nagoya/items/ab6e01941cbb98a48a8a
7.4 Character handling , CN3054:2022 (16) p206.c
https://qiita.com/kaizen_nagoya/items/fef96298b967e55b5a1d
7.6 Floating-point environment , CN3054:2022 (17) p211.c
https://qiita.com/kaizen_nagoya/items/afe089db342f52b5aca8
7.8 Format conversion of integer types , CN3054:2022 (18) p224.c
https://qiita.com/kaizen_nagoya/items/293fa4a64e80ab0d9f5d
7.11 Localization , CN3054:2022 (19) p229.c
https://qiita.com/kaizen_nagoya/items/4bfe44eceec51a983ba4
7.12 Mathematics , CN3054:2022 (20) p239.c
https://qiita.com/kaizen_nagoya/items/ecf234a267e6f167ac5e
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
文書履歴(document history)
ver. 0.01 初稿 20230620
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.