Last Update 2020/12/20
-fallow-parameterless-variadic-functionsオプション
名前付き引数の無い可変個引数関数の有効化
テスト概要
名前付き引数の無い可変個引数関数を含むコードのコンパイル
-fallow-parameterless-variadic-functionsオプションを使用
-fallow-parameterless-variadic-functionsオプションを使用
PASS
コンパイル終了・実行ファイル生成
名前付き引数の無い可変個引数関数を含むコードのコンパイル
-fallow-parameterless-variadic-functionsオプション無しで実行
-fallow-parameterless-variadic-functionsオプション無しで実行
FAIL
名前付き引数が無い事によるエラー発生・停止
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
main.c
/* -fallow-parameterless-variadic-functions オプション動作確認用ソースファイル main.c */
#include <stdio.h>
#include <stdarg.h>
int sampFunc(...) /* 名前付き引数の無い可変個引数関数 */
{
return 1;
}
int main(void)
{
int n = sampFunc(3);
printf("n = %d\n", n);
return 0;
}
-fallow-parameterless-variadic-functionsオプションを使用
コンパイル実行
$ gcc -v -fallow-parameterless-variadic-functions main.c
Using built-in specs.
︙
/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ... -fallow-parameterless-variadic-functions ...
︙
as -v --64 -o /tmp/ccBJcMkP.o /tmp/cctHEbjN.s
︙
COLLECT_GCC_OPTIONS='-v' '-fallow-parameterless-variadic-functions' '-mtune=generic' '-march=x86-64'
$ ./a.out
n = 1
$ コンパイル終了・実行ファイル生成
-fallow-parameterless-variadic-functionsオプション無しで実行
コンパイル実行
$ gcc -v main.c
Using built-in specs.
︙
/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v main.c ...
︙
main.c:5:14: error: ISO C requires a named argument before ‘...’
int sampFunc(...) 名前付き引数が無い事によるエラー
^~~
$ エラー発生・停止