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 件のコメント:
コメントを投稿