Last Update 2021/12/03
-undef
システム固有やGCC固有のマクロを事前に定義しない
テスト概要
-undefオプション無し、および-undefオプションを使用したコンパイル(プリプロセスのみ)
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
sample.c
#define SAMPLE 1
int main(void)
{
return 0;
}
動作テスト
-undefオプション無しでコンパイル
-dM、-Eオプションで、プリプロセス実行後定義済み全マクロの出力
-dM、-Eオプションで、プリプロセス実行後定義済み全マクロの出力
$ gcc -dM -E sample.c
#define __DBL_MIN_EXP__ (-1021)
#define __FLT32X_MAX_EXP__ 1024
#define __UINT_LEAST16_MAX__ 0xffff
#define __ATOMIC_ACQUIRE 2
#define __FLT128_MAX_10_EXP__ 4932
︙
#define __STDC_IEC_559_COMPLEX__ 1
#define __FLT128_HAS_DENORM__ 1
#define SAMPLE 1
#define __FLT128_DIG__ 33
#define __SCHAR_WIDTH__ 8
︙
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __INT_LEAST64_WIDTH__ 64
#define __UINT_FAST8_TYPE__ unsigned char
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_RELEASE 3
$ システム固有、GCC固有を含む全マクロの出力
-undefオプションを使用してコンパイル
-dM、-Eオプションで、プリプロセス実行後定義済み全マクロの出力
-dM、-Eオプションで、プリプロセス実行後定義済み全マクロの出力
$ gcc -undef -dM -E sample.c
#define __STDC_HOSTED__ 1
#define __STDC_UTF_16__ 1
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201706L
#define _STDC_PREDEF_H 1
#define __STDC_IEC_559_COMPLEX__ 1
#define SAMPLE 1
#define __STDC_VERSION__ 201710L
#define __STDC_UTF_32__ 1
#define __STDC__ 1
$ システム固有、GCC固有は定義されない