問題タブ [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.
implementation - 標準 C ライブラリの bsearch() 関数はどのように実装されていますか?
標準のバイナリ検索機能がどのように実装されているか知っている人はいますか?
これが原型です。
彼らが void ポインターをどのように使用したかについて、私は本当に興味があります。
c - 文字配列のリテラル文字列初期化子
配列がポインターに減衰する場合の次の規則:
式に現れる array-of-T 型の左辺値 [質問 2.5 を参照] は、(3 つの例外を除いて) その最初の要素へのポインターに崩壊します。結果のポインターの型は T へのポインターです。
(例外は、配列が sizeof または & 演算子のオペランドであるか、文字配列のリテラル文字列初期化子である場合です。)
配列が「文字配列のリテラル文字列初期化子」の場合を理解する方法は? いくつかの例をお願いします。
ありがとう!
c - C99 の最も便利な新機能は何ですか?
C99は 10 年以上前から存在していますが、サポートが遅れているため、ほとんどの開発者は C89 を使い続けています。今日でも、C コードで C99 の機能に出くわすと、少し驚くことがあります。
ほとんどの主要なコンパイラが C99 をサポートするようになったので (MSVC は顕著な例外であり、一部の組み込みコンパイラも遅れをとっています)、C を扱う開発者は、C99 のどの機能が利用できるかをおそらく知っておくべきだと思います。一部の機能は、これまで標準化されたことのない一般的な機能 (snprintf
たとえば ) であるか、C++ でおなじみの機能 (柔軟な変数宣言の配置、または単一行//
コメント) ですが、一部の新機能は C99 で最初に導入されたものであり、多くのプログラマーにはなじみがありません。
C99 の最も便利な新機能は何ですか?
参考までに、C99 標準(ドラフトとしてラベル付けされていますが、私が知る限り、更新された標準と同じです)、新機能のリスト、およびGCC C99 実装ステータス.
回答ごとに 1 つの機能をお願いします。複数の回答を残してください。新機能を示す短いコード例が推奨されます。
c - C99 の #define はありますか?
私は C99 で何かをやりたいと思っています。何#define
をチェックするのですか?
c - c89およびc99でコンパイルすると、gcc 4.4.2はデフォルトでc99になりますか?
Linuxでgcc4.4.2を使用しています
gccがデフォルトでc99を最新の標準としてコンパイルするように自動的にデフォルト設定されるのだろうか?
c89またはc99のどちらでコンパイルするかを指定するにはどうすればよいですか?
アドバイスをありがとう、
c - 構造体の関数ポインタ宣言で引数を指定する必要がないのは正しいC99ですか?
次の C99 コードを書きましたが、構造体宣言について疑問に思っていました。その中で、メイン コードの 2 つのプッシュ/ポップ メソッドを最終的に指す 2 つの関数ポインターを宣言します。関数ポインターの宣言では、引数を省略しましたが、プログラムは正常にコンパイルされます。これは正しいです?引数を指定する必要があることを読んだと確信しています。これは正しい C99 の動作ですか?
関数ポインターに引数を追加しようとしましたが、コンパイルエラーが発生したExtraneous old-style parameter list.
ので、正しいと思いますが、別の意見が欲しいです。
編集: 上記の「Extraneous old-style parameter list」エラーが発生しました。これは、「stack」で struct キーワードを使用するのではなく、typedef 名「stack」を使用して、現在定義している構造であると定義したためです。
Pelles Cコンパイラを使用しています。
c - Cでのリンケージ:GCCはC99仕様に準拠していますか、それとも仕様を理解していませんか?
C99でのストレージクラス指定子の正確な動作を理解しようとしていますが、仕様を誤解しない限り、一部のGCCの動作は仕様に準拠していないようです。6.2.2(2)から:
1つの変換ユニット内で、内部リンケージを持つ識別子の各宣言は、同じオブジェクトまたは関数を示します。
ただし、次のプログラムを使用してGCC(powerpc-apple-darwin9-gcc-4.2.1)をテストしました。
でコンパイルされ-std=c99
、次のように出力されます。
仕様を正しく理解していれば、次のように出力されます。
GCCがここの仕様から逸脱する理由を理解しています。この動作について、より深い説明があるかどうか疑問に思っています。
c - GCC で std=c99 フラグを設定する
-std=c99
コンパイルごとにフラグを設定する必要がないように、フラグを設定できるファイルがあるかどうか疑問に思っていました。UbuntuでGCC 4.4を使用しています。
c - sizeof(void *)とsizeof(function_type_ptr *)の同等性
sizeof(void *)とsizeof(function_type_ptr *)の同等性
sizeof(void *)とsizeof(function_type_ptr *)は等しくなければなりませんか?C(C90、C99)規格で必要ですか?
function_type_ptrは関数へのポインタです。
この質問は、あなた自身の意見ではなく、標準的な要件に関するものです。リンク、セクション番号、規格からの引用をお願いします