A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
メーカーによって異なる実装になってることを俗に「方言」と呼びます。
ただ方言があまりにきついと、全然何言ってるかわかんなくなったり、意味が真逆になっちゃったりするから、Cではそれを避けるために仕様書があります。でもそれをどう実装するかは設計者やメーカーの意図を反映することにより変化します。「うちはこうするのが便利だと思っているのでそのように作った」みたいなことですね。そこで複数の実装が存在する結果になるわけです。
No.2
- 回答日時:
異なる言語仕様規格と実装者(メーカー、開発コミュニティ)が有るからです。
規格の方はK&R、C89/C90(ANSI C、ISO C、または標準C)、C99、C11の様に
変遷してきました。
これらの規格を元に、複数の実装者により、C言語製品が作られました。
規格をどれだけ取り入れるか、又は独自の機能(関数)を追加拡張するかは、
各実装者毎に異なります。
#全ての規格を実装していない場合や、古い規格との併存を許可するか否か
#の度合いも、実装者及び製品のバージョンにより異なる場合も有ります。
特に、Microsoft製の物は独自の拡張が多く、標準から大きく異なります。
#他の環境への移植が困難
No.1
- 回答日時:
C言語に何個も種類はありませんよ。
現行ではISO(国際標準化機構)で2011年に制定された、通称C11が一個のみ、です。
多分若干勘違いしてるようなんで、補足説明しておきます。
C言語は先程書いた通り、国際標準化機構で「仕様(specification)」、つまり「文章として」定義されています。
日本ではそれを受けて、JIS(日本工業規格)の方で同様に「仕様書」が公開されています。
JISX3010(C言語)
http://www.jisc.go.jp/app/jis/general/GnrJISNumb …
と言う事は、この仕様書に従って作れば、誰でも「C言語のコンパイラ」なり「インタプリタ」が作れる、って事ですね。
当然、質問者であるohemayuさんが作っても構わないです。
これが「C言語コンパイラがたくさんある」理由です。こういうのを通称「実装」と言うんですが、要するに
「C言語は定義上一つしかないけど、C言語の実装はたくさんある」
わけです。理解出来たでしょうか?
重要なのは「仕様が秘密」なのではなくって「公開されてるから」誰でも仕様に従う限り実装が可能で、必要な部分(と言うのは仕様書全部ですが)さえ実装出来れば「C言語を名乗る事が出来る」とこですね。
(つまり+αで「俺はこの機能が欲しい!」と思ったら追加は可能です)
もう一つの観点として仕様の変遷もあります。国際標準化機構では今まで、都合2回C言語の仕様を改訂しています。
古い仕様に本当は従うべきじゃないんですが、古い仕様に従ったコンパイラも一応「C言語」を名乗ったりしてますね・・・本当は望ましくないんですが。
お分かりいただけたでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日本語 普遍・特殊・個別をハガの違いに適用しようとするのは無理筋 139 2022/11/17 19:59
- 日本語 【は】について。感想を聞かせてください。特に日本語学習者の方。質問も大歓迎。 9 2022/09/30 15:46
- 哲学 神は 普遍神である――この一文で世界は変わる 18 2023/01/20 07:03
- 哲学 神論です:一般および個別絶対性理論 ならびに 特殊絶対性仮説 または 宗教への絶対批判 2 2022/06/09 08:58
- 哲学 カルトに憤りを込めて:一般および個別絶対性理論 ならびに 特殊絶対性仮説 または 宗教への絶対批判 4 2022/09/06 14:38
- 哲学 一般および個別絶対性理論 ならびに 特殊絶対性仮説 または 宗教への絶対批判 7 2023/03/13 04:59
- 哲学 カルト宗教の批判は 成り立ちませんか? 129 2022/10/26 05:12
- 哲学 一般および個別絶対性理論 ならびに 特殊絶対性仮説 または 宗教への絶対批判 1 2023/04/18 13:41
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- お菓子・スイーツ 【プロのパティシエさんに質問です】チーズケーキとドイツのケーゼクーヘンの違いって何ですか 1 2023/02/05 22:36
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
未使用引数の注意文出力を回避...
-
ubuntu上でC言語を利用している...
-
Visual Studio でmakefileを使...
-
Σの計算について
-
printfなど、標準関数のソース...
-
POWERCOBOLのSQL...
-
AIXとCOBOLについて
-
組み込みソフト。ROM領域にデータ
-
コンパイラ bcc32
-
volatile修飾子について
-
最初に使う変数のゼロクリアに...
-
C++Builder → Visual C++ 移植...
-
パクるのに最適なソースの本、...
-
二つの整数を昇順に並べ換える...
-
main() 関数は、int を返値とす...
-
パーサとコンパイラの違いって?
-
gccコンパイラー
-
PICでのI2C通信でのマスタ、ス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
組み込みソフト。ROM領域にデータ
-
cc と gcc の違い
-
printfなど、標準関数のソース...
-
パーサとコンパイラの違いって?
-
C言語の規格
-
C++Builder → Visual C++ 移植...
-
<conio.h>?
-
COBOLの論理演算子について質問...
-
Σの計算について
-
リリースモードとデバッグモー...
-
COBOLのALPHABET...
-
C言語はC言語でできている?
-
24bit サイズの変数
-
Visual Studio でmakefileを使...
-
VC++の/Zm オプションについて
-
VBでVC++の処理速さを実...
-
C言語 main関数とsum関数の記...
おすすめ情報