sample_c_function


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

関数外で仮引数の宣言ができるか。

rogueで次の様なコードがあった。

update_mdest(obj)
register THING *obj;
{
    register THING *mp;

    for (mp = mlist; mp != NULL; mp = next(mp))
        if (mp->t_dest == &obj->o_pos)
     mp->t_dest = &hero;
}

これって仮引数の宣言を外部でやっているんじゃねーのって思っていたんだけど、違うのかというのを、

本から情報を引っ張ってこれなかったので実際にGCCで打ってみることに。

結果

registerじゃなくてもコンパイル通ったよ。お兄ちゃん・・・。

#include<stdio.h>
void func(char* hoge){
  printf("%s\n",hoge);
}

void func2(hoge) char* hoge;
{
  printf("fn2:%s\n",hoge);
}

void func3(register char* hoge){
  printf("fn3:%s\n",hoge);
}

void func4(a,b) int a;int b;
{
  printf("%d\n",a+b);
}

int main(){
  func("hello test.");
  func2("うそw");
  func3("regってます");
  func4(10,20);
}

K&Rを読んでおきたい今日この頃。