K&R 関数定義から ANSI プロトタイプを生成する。 これにより、K&R から ANSI への遷移が容易になります。
.-nogenproto-----------------. >>- -q--+-genproto--+--------------+-+------------------------->< '-=--parmnames-'
parmnames なしで -qgenproto を使用すると、パラメーター名なしでプロトタイプが生成されます。パラメーターは、parmnames が指定されたときにプロトタイプに組み込まれます。
以下の関数 foo.c について、
foo(a,b,c) float a; int *b; int c;
以下のように指定すると、
xlc -c -qgenproto foo.c
以下が生成されます。
int foo(double, int*, int);
パラメーター名は除去されます。 一方、以下にように指定すると、
xlc -c -qgenproto=parmnames foo.c
以下が生成されます。
int foo(double a, int* b, int c);
この場合、パラメーター名は保持されます。
K&R 関数に渡される前にすべての狭い型の引数 (char、short、float など) が拡張されることが ANSI に規定されているため、float a は、プロトタイプでは double または double a として表されるので注意してください。
関連情報