問題タブ [c17]

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.

0 投票する
1 に答える
2472 参照

c - C17またはC18と呼ぶべきですか?

ISO 9899:2018 は、 ISOからしばらく前から入手可能です。変更のリスト:

C17 とは何ですか? また、この言語にはどのような変更が加えられましたか?

ISO ドキュメントは 9899:2018 になりますが、非公式にはこのバージョンの規格はしばらくの間 C17 と呼ばれていました。C17とC18のどちらにしようか迷っています。

意見に基づく回答をかき立てないようにするために、私の質問は次のとおりです。この標準を「C17」または「C18」とラベル付けしている正規の情報源は何ですか?

もちろん、最も標準的な情報源は ISO 規格そのものです。そのため、一貫性を保つために、標準を C18 と呼ぶ必要があります。

  • C90 = 9899:1990
  • C99 = 9899:1999
  • C11 = 9899:2011
  • C1x = 9899:2018

2017年ではなく2018年にリリースされたので、C18と呼ぶべきだと思いますか?

別の例として、これ-std=c17によると、 gcc がコンパイラ スイッチを作成したことを知っています。gcc のマニュアルはやや標準的です。彼らはその名前を維持するつもりですか?clang や icc のような他のものはどうですか?

コンセンサスはありますか?委員会からの意見?

0 投票する
1 に答える
139 参照

c - Windows メモリのフォーマットの問題

この動的な再割り当てをポータブルな方法で機能させようとしています。

私のプログラムは、ユーザーからのテキスト行を受け取り、それをバッファーに追加します。バッファー内のテキストの長さが 20 以上の場合、最初の 20 文字を削除し、それ以降のすべての文字をバッファーの先頭に移動します。

Linux では問題なく動作するこのコードがありますが、Windows で実行するとガベージが発生します。mallocのみを使用してこれをポータブルにする理由/方法を知っている人はいますか? IE は string.h(strcpy) str を使用していません... len 以外のもの。

c17 のみ - 壊れたスタックはありません (ポータブルではありません)。これが私のコードです。エラーなしで gcc 7.3、mingw 7.3 をコンパイルします。get と put をより安全な関数に置き換えましたが、それでもウィンドウにガベージが表示されます。これはフォーマットの問題だと思います...

0 投票する
3 に答える
239 参照

c - 移植可能な方法で、構造体のメンバーを指すポインターから構造体の先頭へのポインターを計算するにはどうすればよいですか?

T1T2が 2 つの型であり、次の構造体が与えられていると仮定します。

さらに、 type のオブジェクトがあるとしますstruct s:

これから、オブジェクトの 2 番目の構造体メンバーへのポインターを計算できます。

私が探しているのは、 objectを指すような型qのポインターから計算するポータブルな方法です。pstruct s *pa

0 投票する
1 に答える
110 参照

c - ネイティブ C の std::lock_guard に似たものはありますか?

C++ では、lock_guard を使用することをお勧めします。これにより、オブジェクトが破棄されたときにミューテックスのロックが解除されることが保証されます。

Cで同じことを実装する方法はありますか? それとも、手動で実装する必要がありますか:

ロックミューテックス

グローバル変数で何かをする

ミューテックスのロックを解除