ttt

getttyent

これってwarningさえ出ないんだ!

2012-04-05 23:58:08 | デジタル・インターネット

たとえば、こんな感じの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でした。

20120405