ヘッダファイル

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
大工

ヘッダファイル

#1

投稿記事 by 大工 » 18年前

自作ヘッダファイルを作って、その中に関数のプロトタイプ宣言を入れなくてもfunc2.cで定義したvoid function(void); がfunc.cで利用することが出来ました。

危険なことをしてそうなのは分かるのですがリンクの時点でコンパイラが都合を付けてくれているのでしょうか?

それともヘッダファイルには関数のプロトタイプ宣言はいらない??


ご協力おねがいします。

func.c
#include <stdio.h>

int main(void){

  function();

  return 0;
}
func2.c
#include <stdio.h>

void function(void) {

printf("これはテスト\n");
}

box

Re:ヘッダファイル

#2

投稿記事 by box » 18年前

> 自作ヘッダファイルを作って、その中に関数のプロトタイプ宣言を入れなくても

その、「プロトタイプ宣言を書いていない自作ヘッダーファイル」を
見せていただくことは可能ですか?

大工

Re:ヘッダファイル

#3

投稿記事 by 大工 » 18年前

すみません、それは作ってないです・・・

それは、stdio.h以外はなにもインクルードせずにという意味です。。。。

あと、上記がgccでコンパイルした結果なんですがBorlandだと"プロトタイプ宣言がない"とエラーで返ってきました。。。

tk-xleader

Re:ヘッダファイル

#4

投稿記事 by tk-xleader » 18年前

C言語の場合、プロトタイプ宣言は絶対ではないはずです。GCCは、ANSI Cに準拠しているので、これをエラーとはしないのだと思います。
しかし、BCCの場合は、C++のコンパイラなので、C++の規則である「プロトタイプの省略不可」が適用されたのだと思います。
ただし、Cでプロトタイプの省略を行うのは、やめておいたほうがいいと思います。

大工

Re:ヘッダファイル

#5

投稿記事 by 大工 » 18年前

はい、わかりました。

ですが、このようなプログラムを書いてgccで通ったらこれで"正解"

そして、その間違いに気付かずに会社に就職

なんか怖いですね^^;

こんなことは無いと思いますが・・・・

閉鎖

“C言語何でも質問掲示板” へ戻る