関数プロトタイプの混乱①で一度暗黙の型情報に関して紹介しました。そんな中次のようなプログラムを見つけました。
型情報なしの関数
func_a(int x);
int main(){
func_a(100);
return 0;
}
func_a(int x)
{
printf("%d\n", x);
return 0;
}
このプログラムはコンパイル通りますでしょうか?Cだと通ってしまいます。HEWではC++でも通りました。(暗黙の型情報がCのルールのままのコンパイラがあるということです。)暗黙の型情報は呼び出し時だけのルールではなかったのです。宣言時も定義時も型情報を書かない場合はintと仮定され矛盾なければそのままコンパイルが出来てしまうのです。もちろんこんな書き方してはいけません。通常のC++ではNGです。