たとえば、こんな感じのC言語のプログラムなのですが
% cat aho.c
#include <stdio.h>
int main( int argc, char* argv[] )
{
int aho = aho;
printf("%d\n", aho);
return aho;
}
int aho = aho はタイプミスだったんですけど…。本当は、int aho = argc; と書いたつもりだった、みたいな。
% gcc -Wall aho.c
なんとまぁ~warningメッセージさえも出ません。コンパイラはGCC。
% ./a.out; echo $?
24
24
という感じで、無意味に実行できてしまいます。
えー!!そうだったんだと、おどろきました、あきれました
変数宣言のときの初期値代入で、右辺と左辺が同じでも、まったく何も言われないとは。
☆
デバイスドライバの中で、こういうタイプミスをしていて、kernel panicしました。
ポインタがNULLでした。