2009年11月1日日曜日

やり直しC


このエントリーをはてなブックマークに追加


stdio.hがないと怒られた。
そういえば、昨日OSを入れ直したから、libcが入ってないや。
sudo apt-get install libc6-dev

main関数と引数void


int main()とmain()は同じ。関数の型を省略するとint型にされる。
hoge(void)は引数をとらないことを明示してあり、
プロトタイプ宣言にてhoge()とした場合、引数なしではなく、”なんでもよい”ということ。

K&R 演習1


エラーメッセージを調べる

#include <stdio.h>

int main()
{
printf("Hello, World";
}


結果
test.c: In function ‘main’:
test.c:5: error: expected ‘)’ before ‘;’ token
test.c:7: error: expected ‘;’ before ‘}’ token

当然、怒られる。
7行目でのerrorは)がないせいで、;も引数扱いされ、終端としての役割がなくなっているためと考える。

#include <stdio.h>

int main()
{
printf("Hello, World";);
}


結果
test.c:5: error: expected ‘)’ before ‘;’ token

あるぇ?
どうやら;は認識されてる。

ちょっと調べるか


以下、後日編集
'(' がきた時点で関数であると認識されてました。


メモ
バッカス・ナウア・フォーム Backus Naur Form
yacc
lex




0 件のコメント:

コメントを投稿