問題タブ [c89]
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 - ANSI C と K&R C の主な違いは何ですか?
ANSI Cに関するウィキペディアの記事には、次のように書かれています。
ANSI C 標準化プロセスの目的の 1 つは、K&R C (最初に公開された標準) のスーパーセットを作成し、その後導入された非公式の機能の多くを組み込むことでした。ただし、標準化委員会は、関数プロトタイプ (C++ プログラミング言語から借用) や、より機能的なプリプロセッサなど、いくつかの新機能も含めました。パラメータ宣言の構文も、C++ スタイルを反映するように変更されました。
それは私に違いがあると私に思わせます。しかし、K&R C と ANSI C の比較は見当たりませんでした。そのようなドキュメントはありますか? そうでない場合、主な違いは何ですか?
編集: K&R の本の表紙には "ANSI C" と書かれていると思います。少なくとも、私が家に持っているバージョンはそうだと思います。もしかして、もう差がない?
c - C での変数宣言の配置
私は長い間、C ではすべての変数を関数の先頭で宣言する必要があると考えていました。C99 のルールは C++ と同じですが、C89/ANSI C の変数宣言の配置ルールは何ですか?
gcc -std=c89
次のコードは、とを使用して正常にコンパイルされますgcc -ansi
。
C89/ANSI モードでの宣言c
とs
エラーの原因となるべきではありませんか?
c - C89、C90、または C99 のすべての関数にプロトタイプが必要ですか?
真に標準に準拠するには、C のすべての関数 (main を除く) にプロトタイプが必要です。それらが同じ翻訳単位で定義された後にのみ使用される場合でも?
c - floor() は正確に表現可能なものを返しますか?
C89 では、floor() は double を返します。以下は動作することが保証されていますか?
私の懸念は、floor の結果が IEEE 754 で正確に表現できない可能性があることです。したがって、d は 2.99999 のようになり、x は最終的に 2 になります。
この質問に対する答えが「はい」であるためには、int の範囲内のすべての整数が double として正確に表現可能でなければならず、floor は常にその正確に表現された値を返さなければなりません。
c - ANSI C89/ISO C90 における void ポインターの境界
ANSI C89/ISO C90 の void-pointer 値の上限と下限を移植可能に決定する方法はありますか? (私は現在、標準のコピーを持っていません(家に持っています)。もちろん、void-pointer の値が署名されていないことが保証されている場合、このタスクは簡単です(sizeof(void *) を介して);しかし、私はできませんこれが保証されているかどうか思い出してください. いくつかの非常に非効率なアルゴリズム (オーバーフローするまでインクリメントするなど) を思いつくことができます.これらの境界を計算します。)
- 編集 -
また、ポインター値の有効性を判断する移植可能な方法はありますか?
理由:これは同僚との話し合いの中で出てきたもので、私は困惑しました。彼が何をしているかわからないけど、興味があるから知りたいだけ!:-)
c - -std=c99 が設定されている場合、gcc が random() インターフェイスを見つけられないのはなぜですか?
私は"#include <stdlib.h>"
ソースの上部で行います。
コンパイル例:
-std=c99 をオフにすると、関数 isfinite() が見つかりません。したがって、これとその他の理由で -std=c99 を使用したいと思います。私が見逃しているトリックはありますか?
c - C89でtypedef'd構造を宣言するより良い方法は?
上記は機能しますが、より簡単な (またはより良い) 方法はありますか?
.net - VSが新しいファイルを自動的に選択するように既存のcプロジェクトのVSソリューションを作成するにはどうすればよいですか?
組み込みアプリケーションをx86に移植して、エミュレーターを作成したいと思います。VS2008を試してみることにしましたが、既存のディレクトリ構造を理解する方法と理解する方法がわかりません。
- アーチ/
- arch/hcs08-HALの実装
- arch/include-HALのパブリックインターフェイス
- arch/x86-ここにエミュレーションレイヤーを配置する必要があります
- os /
- os / src--osレイヤーのソース
- os / include--OSのパブリックインターフェイス
- アプリ/-組み込みアプリケーション
- apps / app1 / src-app1
- apps / app2 / src-app2
3つのプロジェクトが欲しいです:
- arch&os-os / 、arch / include /、arch / x86/*のすべてを含むライブラリプロジェクト
- app1-コンソールアプリプロジェクト。apps/app1/*のすべてが含まれます。
- app2-コンソールアプリプロジェクト。apps/app1/*のすべてが含まれます。
ファイルを1つずつ手動でインポートして上記の構造を作成しましたが、明らかにvsは新しいファイルを自動的に選択せず、プロジェクトはフラットです(フォルダーなし)
OSとアプリケーション層は絶えず開発されているので、新しいファイルを追加することは本当に苛立たしいことです。
VSにすべての新しいファイルを自動的に選択させ、ディレクトリ構造を維持させる方法はありますか?
私はEclipseCDTで上記に簡単にできることを知っていますが、私が言ったように、VS2008を試してみたいと思います。