[解決済み] C、C99、ANSI C、GNU Cの違いは何ですか?
質問内容
のプログラミング練習を開始しました。 コーデック という文字列が表示され、混乱しています。 CとC99の違い。ここでいうCとは何でしょうか?C89なのでしょうか? の一番下にある言語を確認してください。 このサブミット . CとC99の両方が含まれています。
インターネットでGNU Cというのを見つけたのですが、linux/unix系には別のCがあるのでしょうか?これらは、ANSIによるCの規格に準拠しているのでしょうか?また、あるところで "C99 strict" と書いてありました。これは何ですか?
他に違う規格のC言語が使われているのでしょうか?C 4.3.2というのがあるのでしょうか、それとも現在使われているgccのバージョンなのでしょうか?
EDIT
これは , この , この が役立ちました。もっと検索して未回答のものを編集してみます。
私はプログラミングの初心者ではありません。C言語が何であるかは知っています。C89、C99、C11のようなANSIによる異なるC標準があることは知っています。
どのように解決するのですか?
-
標準化以前のものを一般に「K&R C"」と呼びますが、これは有名な本( 第1版 と 第2版 )で、C言語の発明者であるデニス・リッチーが著者の一人として名を連ねています。これが1972年から1989年までの「C言語」である。
-
C言語の最初の規格は、1989年にアメリカの国立標準化機構ANSIから発表された。このリリースは、C89またはANSI-Cと呼ばれています。1989年から1990年まで、これがC言語でした。
-
その翌年、アメリカの規格が国際的に認められ、ISOで発行された(ISO 9899:1990)。このリリースはC90と呼ばれています。技術的には、C89/ANSI-Cと同じ規格です。形式的には、C89/ANSI-Cに取って代わり、それらを時代遅れにしたものです。1990年から1999年まで、C90は"the C language"でした。
なお、1989年以降、ANSIはC言語とは何の関係もない。プログラマーはいまだに "ANSI C" について話していますが、一般にそれが何を意味するのかわかっていないようです。ISOはISO 9899という規格を通してC言語を所有しています。
-
1995年にマイナーアップデートが発表され、quot;C95"と呼ばれることもあります。これはメジャーリビジョンではなく、正式名称をISO/IEC 9899:1990/Amd.1:1995 とする技術的な修正版でした。主な変更点は、ワイドキャラクタサポートの導入です。
-
1999年、C言語の規格が大きく改訂された(ISO 9899:1999)。このバージョンの規格はC99と呼ばれる。1999年から2011年までは、これが"C言語"であった。
-
2011年、C言語の規格が再び変更された(ISO 9899:2011)。このバージョンはC11と呼ばれています。のような様々な新機能が追加されました。
_Generic
,_Static_assert
とスレッドサポートが追加されました。このアップデートでは、マルチコア、マルチプロセシング、式配列に重点が置かれた。2011年から2017年までは、"C言語"でした。 -
2017年、C11が改訂され、様々な不具合報告が解決されました。この規格は、非公式にC17またはC18と呼ばれています。2017年に完成した(そして、使用する
__STDC_VERSION__
=201710L
)が、ISOから9899:2018としてリリースされたため、C17/C18のあいまいな表現になっています。新機能は含まれず、修正のみ。C言語の現行バージョンである。
C99 strict"は、コンパイラが規格に忠実に従うように強制するコンパイラの設定のことだと思われます。C99ストリクトという用語があります。 適合する実装 C言語規格の 基本的には、「このコンパイラはC言語を正しく実装している」という意味です。C言語を正しく実装しているプログラムは、正式には 厳密適合プログラム .
GNU C"は、2つの意味を持ちます。GNU Compiler Collection (GCC)の一部として提供されているCコンパイラそのものを意味する場合と、GNU C"の一部として提供されているCコンパイラそのものを意味する場合です。あるいは、GCC Cコンパイラが使う標準外のデフォルトの設定を意味することもあります。もし、あなたが
gcc program.c
という場合、Cの標準に従ってコンパイルするのではなく、非標準のGNUの設定にしたがってコンパイルします。たとえば、Linuxカーネル全体は標準のCではなく、非標準のGNU Cで作られています。
C言語標準に従ってプログラムをコンパイルしたい場合は、次のように入力します。
gcc -std=c99 -pedantic-errors
. あなたのGCCのバージョンがサポートしている場合は、c99をc11に置き換えてください。
関連
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] g++とgccの違いは何ですか?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] 現在のCまたはC++の標準文書はどこにありますか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] munmap_chunk(): 無効なポインタ
-
[解決済み] stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] ソケットアクセプト - "開かれているファイルが多すぎる"
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] C言語標準に準拠した構造体の初期化方法
-
[解決済み] C言語でファイルが存在するかどうかを確認する最も良い方法は何ですか?
-
[解決済み] C言語の構造体(CGRectやCGPointなど)をNSLog化することは可能ですか?