問題タブ [c11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C11 はサポートしているのに、C++11 は匿名構造体をサポートしていないのはなぜですか?
C11 は、次のような無名構造をサポートしています。
基本的に、そのような a のメンバーは、囲んでいるorstruct
のメンバーであるかのように扱われます(囲んでいる構造自体が無名の場合、再帰的に)。struct
union
C++11 が無名構造を含まない理由は何ですか? struct
確かに、それらはめったに役に立たないだけです(ほとんどの場合、共用体の中で、 の識別子の入力をなくすためです)。しかし、それらは仕様 (および多くのコンパイラーによって既に実装されているもの) への明らかな追加であるように思われるため、少なくとも C11 標準との互換性を維持するために、それらは確かに議論されたに違いありません。では、なぜ追加されなかったのでしょうか。
c - C11 の最新の変更点
C1x は ISO/IEC 9899:2011 別名 C11 になりました。
2011 年 4 月のドラフト n1570から標準にどのような変更があるか (もしあれば) 知っている人はいますか?
ETA: ロンドン (2011 年 3 月) の委員会議事録 (n1570 に含まれる必要があります)はこちら、ワシントン DC (2011 年 10 月)の議事録はこちら; DC議事録で承認された変更のリストは、物事をカバーする必要があると思います.
c - 利用可能なコンパイラは、C11 '_Atomic' キーワードとそれに関連するヘッダー 'stdatomic.h' の実装を提供しますか?
C11 標準が作成されてから 1 か月しか経っていないことは知っていますが、草案_Atomic
はずっと古いものです。また、標準が正式に承認される前に、GCC コンパイラがそのような機能を実装するために真剣に取り組んでいることも知っています。しかし、サポートはまだプライムタイムの準備ができていません。
ただし、他のコンパイラにも興味があります。Visual Studio、または組み込みコンパイラ cq. 環境。そのようなサポートを提供するために準備を整えているコンパイラー・プロバイダーはいますか? リンクは大歓迎です。
私は自動車の組み込み開発に取り組んでおり、自分でその方向に進むべきかどうか疑問に思っているので、質問しています。これまで、ほとんどの環境 (AutoSAR や Vector OS サポートなど) は独自のソリューションを提供してきましたが、新しい標準では特定の構文とセマンティクスが提供されています。コンパイラの作成者が C11 の方向に向かわない限り、これは唯一の真の解決策であり続けます。
c - C11型ジェネリック式-関数のオーバーロードを追加しないのはなぜですか?
2011年12月にリリースされたC標準の新しいバージョンであるC11に関するウィキペディアの記事を読んでいたところ、追加された機能の1つが「タイプジェネリック式」であることがわかりました。
_Generic
キーワードを使用したタイプジェネリック式。たとえば、次のマクロcbrt(x)は、 x のタイプに応じて、 cbrtl (x)、cbrt(x)、またはcbrtf(x )に変換されます。
これは私にはかなり恐ろしいように見えます-とにかく言語を変更しようとしているのなら、C ++のように関数のオーバーロードを追加してみませんか?
c - char[] はどのように UTF-8 文字列を表すことができますか?
C11 では、プレフィックス u8 を持つ新しい文字列リテラルが追加されました。これは、UTF-8 にエンコードされたテキストを含む char の配列を返します。これはどのように可能ですか?通常のcharは署名されていませんか?符号ビットのために、使用する情報が 1 ビット少ないということですか? 私の論理では、UTF-8 テキストの文字列は unsigned char の配列である必要があることを示しています。
c - C11GCCで?
を使用してC11コードをコンパイルしようとしていますthread.h
が、できません。GCCを再コンパイルし(現在4.6.2を実行)、を使用してコンパイルしようとしていますgcc -std=c1x file.c -o file
。これはg++で(つまり、thread
ライブラリを使用して)実行できますが、Cでは実行できませthread.h
ん。GCCディストリビューションにはまだ含まれていませんか?
c - c11 でのマルチスレッドのサポート
新しい C11 標準は、マルチスレッドのサポートを提供します。
私の質問は少し多様ですが、間違いなく答えられます。C11 n1570ドラフト
を見てきました。
それは言います:
改善されたメモリ シーケンス モデル、アトミック オブジェクト、およびスレッド ローカル ストレージを含む、複数の実行スレッドのサポート (
<stdatomic.h>
および<threads.h>
)
改善されたメモリ シーケンス モデルとは何ですか? c99 標準からどのように/何が変更されましたか?
標準からの引用だけでなく、誰かがそれらをより深く掘り下げて、関連するセマンティクスを説明しようとしてくれれば幸いです。
私が理解しているように、C11 は次のサポートを提供します。
- スレッドの作成と管理
- ミューテックス
- 条件変数
- スレッド固有のストレージ &
- 原子オブジェクト
何も見逃していないことを願っていますか?
現在、標準ライブラリ自体がマルチスレッドに必要なすべての機能を提供する (提供する予定である) ため、将来的に POSIX やそのようなライブラリ (マルチスレッド サポート用) は必要ないのでしょうか?
最後に、上記の機能をサポートしているコンパイラはどれですか? これらがサポートされるタイムラインに関する参照はありますか?
C++11 の場合、コンパイラのサポートと機能へのリンクがあったことを覚えています。
c - 匿名の構造体と共用体はいつC11で役立ちますか?
C11は、とりわけ、「匿名の構造体と共用体」を追加します。
私はざっと見て回ったが、匿名の構造体と組合がいつ役立つかについての明確な説明を見つけることができなかった。私は彼らが何であるかを完全に理解していないので尋ねます。後で名前のない構造体または共用体であることがわかりますが、私は常にそれをエラーとして扱ってきたので、名前付き構造体の使用しか考えられません。
c - char *文字列リテラルを変更しようとすると、コンパイラがエラーを検出して生成しないのはなぜですか?
次の2つのコードを想定します。
上記のものは機能しません。
これはそうです。
最初のものに関しては、文字列「hello world」が読み取り専用メモリセクションに格納されている可能性があるため、変更できないことを理解しています。ただし、2つ目はスタック上に文字配列を作成するため、変更できます。
私の質問はこれです-なぜコンパイラは最初のタイプのエラーを検出しないのですか?なぜそれはC標準の一部ではないのですか?これには特別な理由がありますか?
c - C11に従ってバイナリプレフィックスを使用するにはどうすればよいですか?
私は現在、C30
(デバイス用のマイクロチップにC
基づくコンパイラー)を使用してマイクロコントローラーをプログラミングすることから始めており、好奇心から有効にしました。まず、C11のコメントマーキングで//が「間違っている」ことを知りませんでした。代わりに、/ * blah blah * /を使用する必要がありますが、本当に驚いたのは、コード行に対するこの警告です。GCC
PIC24
Strict ANSI warnings
「警告:非標準のバイナリプレフィックスの使用」
コードの行は次のとおりです。
OSCCONbits.COSC = 0b000;
C11(ISO / IEC 9899:2011)のドラフトの1つをオンラインで調べましたが、Cのバイナリプレフィックスについては何も見つかりません。http://www.open-std.org/jtc1/sc22/wg14/www /docs/n1570.pdf
C11によるCの正しいバイナリ表記は何ですか?