Last Update 2022/12/01
-std=iso9899:199409
言語標準をiso9899:199409としてコンパイル
テスト概要
C++スタイルのコメントが含まれるコードをコンパイル
-std=オプションに iso9899:199409 を指定してコンパイル実行
FAIL
C++スタイルコメントでエラー発生・停止
-std=オプションの指定無しでコンパイル実行
PASS
コンパイル終了・実行ファイル生成
Digraph(ダイグラフ)を使用したコードをコンパイル
-std=オプションに c90 を指定してコンパイル実行
FAIL
Digraphでエラー発生・停止
-std=オプションに iso9899:199409 を指定してコンパイル実行
PASS
コンパイル終了・実行ファイル生成
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
C++スタイルのコメントが含まれるコードをコンパイル
sample1.c
/* -std=iso9899:199409 オプション動作確認用ソースファイル(1) */
// C++スタイルコメント
#include <stdio.h>
int main(void)
{
printf("-std=iso9899:199409 オプション動作確認用ソースファイル(1)\n");
return 0;
}
-std=オプションに iso9899:199409 を指定してコンパイル実行
$ gcc -v -std=iso9899:199409 -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 ... -std=iso9899:199409 ...
︙
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 ...
︙
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/cc4Rryck.o /tmp/ccf5KYIt.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=iso9899:199409 オプション動作確認用ソースファイル(1)
$ コンパイル終了・実行ファイル生成
Digraph(ダイグラフ)を使用したコードをコンパイル
sample2.c
/* -std=iso9899:199409 オプション動作確認用ソースファイル(2) */
#include <stdio.h>
int main(void)
{
char s[10];
s<:0:> = 'a'; /* Digraphによる記述 */
s[1] = '\0';
printf("-std=iso9899:199409 オプション動作確認用ソースファイル(2)\n");
printf("s = %s\n", s);
return 0;
}
-std=オプションに c90 を指定してコンパイル実行
$ gcc -v -std=c90 -Wpedantic sample2.c
Using built-in specs.
︙
/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 ... -std=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でエラー発生・停止
-std=オプションに iso9899:199409 を指定してコンパイル実行
$ gcc -v -std=iso9899:199409 -Wpedantic sample2.c
Using built-in specs.
︙
/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample2.c ... -std=iso9899:199409 ...
^^^^^^^^^^^^^^^^^^^ -std=iso9899:199409として指定
︙
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
︙
as -v --64 -o /tmp/ccMoywP1.o /tmp/ccpVqDRj.s
︙
/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ...
COLLECT_GCC_OPTIONS='-v' '-std=iso9899:199409' '-Wpedantic' '-mtune=generic' '-march=x86-64'
$ ./a.out
-std=iso9899:199409 オプション動作確認用ソースファイル(2)
s = a
$ コンパイル終了・実行ファイル生成