問題タブ [c99]
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++ - C99stdint.hヘッダーとMSVisualStudio
驚いたことに、MS VisualStudio2003以降にC99stdint.hがないことに気づきました。彼らには理由があると思いますが、どこでコピーをダウンロードできるか誰か知っていますか?このヘッダーがないと、uint32_tなどの便利なタイプの定義がありません。
c - C99はどの程度普遍的にサポートされていますか?
今日のコンパイラでは、C99標準はどの程度普遍的にサポートされていますか?GCCでさえ完全にサポートしていないことを理解しています。これは正しいですか?
C99のどの機能が他の機能よりもサポートされていますか?つまり、ほとんどのコンパイラが私を理解していることを確認するために使用できる機能はどれですか?
c++ - Visual Studio は新しい C / C++ 標準をサポートしていますか?
私は C99 と C++11 について読み続けており、これらすべてが言語標準に追加されつつあり、いつか使用すると便利になるかもしれません。しかし、私たちは現在、Visual Studio で C++ を作成することで苦しんでいます。
標準の新しいものがビジュアル スタジオに追加されることはありますか?それとも、Microsoft はそれを行うために新しい C# バリアントを追加することにもっと関心を持っていますか?
編集: 受け入れられた回答に加えて、Visual C++ チームのブログを見つけました:
具体的には、その中のこの投稿:
非常に便利。ありがとう!
c++ - C と C++ にダイグラフがあるのはなぜですか?
今日、C99 と C++ に有向グラフがあることを知りました。以下は有効なプログラムです。
私の質問は、なぜそれらが存在するのですか?
c - C89、C90、または C99 のすべての関数にプロトタイプが必要ですか?
真に標準に準拠するには、C のすべての関数 (main を除く) にプロトタイプが必要です。それらが同じ翻訳単位で定義された後にのみ使用される場合でも?
c - 文字列を珍しい整数型に移植可能に変換する方法は?
scanf()
いくつかの背景: たとえば、文字列を のような標準の整数型に変換するために for を使用したい場合は、次のようにfromuint16_t
を使用します。SCNu16
<inttypes.h>
しかし、より珍しい整数型のようなpid_t
ものにはそのようなものはありません。では、通常の整数型のみがサポートされてい<inttypes.h>
ます。printf()
移植可能な aに別の方法で変換するには、次のように にpid_t
キャストしてintmax_t
使用できますPRIdMAX
。
scanf()
ただし、 に移植可能にする方法はないようですpid_t
。これが私の質問です:これを移植可能にするにはどうすればよいですか?
にキャストしてから、値がの制限内にあることを確認してから にキャストすることを考えscanf()
ましたが、 の最大値または最小値を取得する方法はないようです。intmax_t
pid_t
pid_t
pid_t
c - C99 と ANSI-C の構造体の違いは何ですか?
このコードは ANSI-C では正しくないように見えますが、C99 では問題ありません。
C99 と ANSI-C の struct の違いは何ですか?
編集:「a」を忘れました、悪いです。このコードは、C99 モードの gcc で問題なくコンパイルされますが、すべての C99 拡張機能をサポートしていないことが知られている splint では解析エラーになります。
Edit2: これが splint の出力です:
Edit3: このファイルは eCos fileio.h (このフラグメントの最後の行は 152 行目) です。
c - -std=c99 が設定されている場合、gcc が random() インターフェイスを見つけられないのはなぜですか?
私は"#include <stdlib.h>"
ソースの上部で行います。
コンパイル例:
-std=c99 をオフにすると、関数 isfinite() が見つかりません。したがって、これとその他の理由で -std=c99 を使用したいと思います。私が見逃しているトリックはありますか?
iphone - libSystem ライブラリのリファレンス
ドキュメントによると、iPhone のコア OS には libSystem ライブラリが含まれており、これには標準の C ライブラリ関数が含まれていると思われます。libSystem で利用可能なすべての機能を確認するにはどうすればよいですか?
c - 変数を宣言する場所をスプリントに無視させるにはどうすればよいですか?
変数を宣言する場所をスプリントに無視させる方法を知っていますか?
古い学校の c では、すべての関数の最初に変数を宣言するように指示されていますが、私は悪い人なので、変数を使用する場所の近くで宣言するのが好きです。良い例は int i; です。for(i=0;...) の直前。
非常に簡単な例を見てみましょう
ここで、splint とほとんどの古い c コンパイラは int i; を移動したいと考えています。1 行上げるか、宣言と for ループを {} で囲みます。
さて、質問ですが、このチェックをオフにするにはどうすればよいですか? しかし、良い他のチェックを続けますか?
ありがとうヨハン
注 1: 私はすでに gcc 警告 (以下を参照) を防御の最初の行として使用し、valgrind を 2 番目の行として使用しています。しかし、私の愚かさを制御できるもののリストに添え木を追加することを考えています;-)しかし、このチェックはただ面倒です.
私が使用する gcc 警告: -Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
注 2: 私は、その悪い動作から生じる潜在的な移植性の問題について知っています。しかし、読みやすさが向上すると思います。別名、この型オフ宣言を検索するために上下にジャンプする必要がないことは、より価値があります (これについては別のスレッドで説明します)。
更新: もう少し情報を追加します。上記のコードを main.c というファイルに入れました。使用されているプラットフォームは Ubuntu 8.04 で、エディターとして gvim を使用しています。これは、実行したときの splint からの出力です。
これにより、以前は考えもしなかった 2 つの疑問が生じます。
「現在の値と冗長」、現在の値は?
警告ではなく解析エラーなのはなぜですか?
更新::この問題をサポートするためにスプリントにパッチを適用する可能性があります。これはまだ試していませんが、解決策だと思います。