ユーザーが関数宣言でパラメーターの名前を付けることは可能ですが、
次の 2 つの状態にある場合を除いて、コンパイラーはその名前を無視します。
次の例では、3 番目のパラメーター名 intersects は、 列挙型 subway_line を持つことを意味します。 しかし、この名前は、最初のパラメーターの名前によって隠蔽されています。関数 subway() の宣言は、subway_line が有効な型名ではないので、 コンパイル時エラーを引き起こします。 なぜ有効でないかというと、最初のパラメーター名 subway_line が、 ネーム・スペース・スコープ enum 型を隠蔽し、2 番目のパラメーターで再度使用することができないからです。
enum subway_line {yonge, university, spadina, bloor}; int subway(char * subway_line, int stations, subway_line intersects);
関連参照