Loose-Info.com
Last Update 2020/11/24
TOP - 各種テスト - gcc - -std= - c17

-std=c17
言語標準をc17としてコンパイル

テスト概要

-std=オプションに c90、iso9899:1990、c99、c11、c17 を設定してコンパイルを実行
各標準での__STDC_VERSION__の値を比較

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


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

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

使用ファイル


main.c
/* -std=c17 オプション動作確認用ソースファイル main.c */ #include <stdio.h> int main(void) { long nver = __STDC_VERSION__; printf("__STDC_VERSION__ = %ld\n", nver); return 0; }

動作テスト


-std=オプションに c90、iso9899:1990、c99、c11、c17 を設定してコンパイルを実行
各標準での__STDC_VERSION__の値を比較
$ gcc -v -std=c90 main.c <--- c90を設定してコンパイル Using built-in specs. GNU C89 (GCC) version 8.2.0 (x86_64-pc-linux-gnu) 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 main.c: In function ‘main’: main.c:7:14: error: ‘__STDC_VERSION__’ undeclared (first use in this function); did you mean ‘__FLT_EPSILON__’? long nver = __STDC_VERSION__; __STDC_VERSION__ の未定義エラー ^~~~~~~~~~~~~~~~ __FLT_EPSILON__ main.c:7:14: note: each undeclared identifier is reported only once for each function it appears in エラー発生・コンパイル停止 $ gcc -v -std=iso9899:1990 main.c <--- iso9899:1990を設定してコンパイル Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ... -std=iso9899:199409 ... as -v --64 -o /tmp/ccN5sdoq.o /tmp/ccPAVCf5.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-std=iso9899:199409' '-mtune=generic' '-march=x86-64' $ ./a.out __STDC_VERSION__ = 199409 $ gcc -v -std=c99 main.c <--- c99を設定してコンパイル Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ... -std=c99 ... as -v --64 -o /tmp/ccOZt16z.o /tmp/ccMKjMFW.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-std=c99' '-mtune=generic' '-march=x86-64' $ ./a.out __STDC_VERSION__ = 199901 $ gcc -v -std=c11 main.c <--- c11を設定してコンパイル Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ... -std=c11 ... as -v --64 -o /tmp/cco6ULa3.o /tmp/cc6EWE2f.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-std=c11' '-mtune=generic' '-march=x86-64' $ ./a.out __STDC_VERSION__ = 201112 $ gcc -v -std=c17 main.c <--- c17を設定してコンパイル Using built-in specs. /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ... -std=c17 ... as -v --64 -o /tmp/ccEvzB31.o /tmp/ccQYspQ4.s /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 ... COLLECT_GCC_OPTIONS='-v' '-std=c17' '-mtune=generic' '-march=x86-64' $ ./a.out __STDC_VERSION__ = 201710 $