Loose-Info.com
Last Update 2022/12/01
TOP - 各種テスト - gcc - -std= - c90

-std=c90
-std=c89
-std=iso9899:1990
言語標準をc90(c89、iso9899:1990)としてコンパイル

テスト概要

その1
C++スタイルのコメントが含まれるコードをコンパイル
-std=オプションに c90 を指定してコンパイル実行
FAIL C++スタイルコメントでエラー発生・停止
-std=オプションの指定無しでコンパイル実行
PASS コンパイル終了・実行ファイル生成

その2
Digraph(ダイグラフ)を使用したコードをコンパイル
-std=オプションに c90 を指定してコンパイル実行
FAIL Digraphでエラー発生・停止
-std=オプションの指定無しでコンパイル実行
PASS コンパイル終了・実行ファイル生成

その3
Digraph(ダイグラフ)を使用したコード
-std=オプションに c89 を指定してコンパイル実行
FAIL Digraphでエラー発生・停止

その4
Digraph(ダイグラフ)を使用したコード
-std=オプションに iso9899:1990 を指定してコンパイル実行
FAIL Digraphでエラー発生・停止

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

その1

C++スタイルのコメントが含まれるコードをコンパイル

sample1.c
/* -std=c90 オプション動作確認用ソースファイル(1) */ // C++スタイルコメント #include <stdio.h> int main(void) { printf("-std=c90 オプション動作確認用ソースファイル(1)\n"); return 0; }

-std=オプションに c90 を指定してコンパイル実行
$ gcc -v -std=c90 -Wpedantic sample1.c <--- -WpedanticオプションでISO C で要求される警告を出力 Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample1.c ... -o /tmp/ccnVKpZe.s GNU C89 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C89) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 84637943c330ccfe91c8483610cbfda9 sample1.c:2:1: error: C++ style comments are not allowed in ISO C90 // C++スタイルコメント ^ sample1.c:2:1: error: (this will be reported only once per input file) $ C++スタイルコメントでエラー発生・停止

-std=オプションの指定無しでコンパイル実行
$ gcc -v sample1.c Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample1.c ... -o /tmp/ccekmsCI.s GNU C17 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C17) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none as -v --64 -o /tmp/ccJviR7h.o /tmp/ccekmsCI.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' $ ./a.out -std=c90 オプション動作確認用ソースファイル(1) $ コンパイル終了・実行ファイル生成

その2

Digraph(ダイグラフ)を使用したコードをコンパイル

sample2.c
/* -std=c90 オプション動作確認用ソースファイル(2) */ #include <stdio.h> int main(void) { char s[10]; s<:0:> = 'a'; /* Digraphによる記述 */ s[1] = '\0'; printf("-std=c90 オプション動作確認用ソースファイル(2)\n"); printf("s = %s\n", s); return 0; }

-std=オプションに c90 を指定してコンパイル実行
$ gcc -v -std=c90 -Wpedantic sample2.c <--- -WpedanticオプションでISO C で要求される警告を出力 Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample2.c ... -o /tmp/ccy8hZ3h.s GNU C89 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C89) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 84637943c330ccfe91c8483610cbfda9 sample2.c: In function ‘main’: sample2.c:8:4: error: expected expression before ‘:’ token s<:0:> = 'a'; /* Digraphによる記述 */ ^ $ Digraphでエラー発生・停止

-std=オプションの指定無しでコンパイル実行
$ gcc -v sample2.c Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample2.c ... -o /tmp/ccpqhx5l.s GNU C17 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C17) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none as -v --64 -o /tmp/ccsL2XD1.o /tmp/ccpqhx5l.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' $ ./a.out -std=c90 オプション動作確認用ソースファイル(2) s = a $ コンパイル終了・実行ファイル生成

その3

-std=オプションに c89 を指定してコンパイル実行

コンパイル実行
使用ソースファイル : sample2.c(その2で使用)
$ gcc -v -std=c89 -Wpedantic sample2.c <--- -WpedanticオプションでISO C で要求される警告を出力 Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample2.c ... -std=c90 ... ^^^^^^^^ c90として指定される GNU C89 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C89) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 84637943c330ccfe91c8483610cbfda9 sample2.c: In function ‘main’: sample2.c:8:4: error: expected expression before ‘:’ token s<:0:> = 'a'; /* Digraphによる記述 */ ^ $ Digraphでエラー発生・停止

その4

-std=オプションに iso9899:1990 を指定してコンパイル実行

コンパイル実行
使用ソースファイル : sample2.c(その2で使用)
$ gcc -v -std=iso9899:1990 -Wpedantic sample2.c <--- -WpedanticオプションでISO C で要求される警告を出力 Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample2.c ... -std=c90 ... ^^^^^^^^ c90として指定される GNU C89 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) <--- 規格に関する出力(C89) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 84637943c330ccfe91c8483610cbfda9 sample2.c: In function ‘main’: sample2.c:8:4: error: expected expression before ‘:’ token s<:0:> = 'a'; /* Digraphによる記述 */ ^ $ Digraphでエラー発生・停止