K&R 関数定義から ANSI プロトタイプを生成する。これは、K&R から ANSI に簡単に変遷するのに役立ちます。
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 として示されることに注意してください。