• ベストアンサー

C言語のヘッダファイル

前回のC言語のコンパイラの質問で、たくさんのご回答ありがとうございました。 おかげさまでコンパイラはなんとかなりそうですが、ひょっとしたらまた同じ質問を載せるかもしれません(^^; 今回はC言語のヘッダファイルを自分で作ってみたいんですが、よくわかりません。 microsoft visual studioのvisual c++付属のINCLUDEフォルダにある、stdio.hを開いてみたのですが、基本のprintf()やscanf()なども、どう定義されているか わからず終いでした。本などでもいまいち詳しく書いていなく(そう思うのは僕だけ?)、困っています。c言語のヘッダファイルとc++のヘッダファイルは やっぱり別ものなんでしょうか?ご回答おまちしております。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

うーん、stdio.hの中から見つけられなかったということですか? VC++6.0SP5のstdio.hの329行目には _CRTIMP int __cdecl printf(const char *, ...); って書いてあるんですけど・・・ これの意味がわからないといわれるとちょっとつらいですが・・・ stdio.hのように、C++コンパイラについているC言語のヘッダファイルは、C言語でもC++でも使えるように記述されているのが普通です。 ↓stdio.hの最初のほう #ifdef __cplusplus extern "C" { #endif こんなように、C++でしか使えないキーワードを#ifdef - #endifで囲むことによりC言語では無視させたり別のキーワードに置き換えたりしています。

その他の回答 (2)

回答No.3

前の回答者の方と同じですが、ヘッダファイルは使い方次第ではないでしょうか。普通ヘッダファイルにはプロトタイプ宣言でしょかね。一度ライブラリを作ってみると吉かも!WINAPIを含め言語定義のものは、素直に この関数にこの引数で返り値が これとしたほうが楽ちんですよ。言語を作ろうってのなら話は別ですけどね(^^; 

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

ヘッダファイルには特にルールがあるわけではありません。自分の使いやすいように定義するのが基本です。 自分のソースで利用する構造体やクラス、関数のプロトタイプ宣言やデファイン(#define)、場合によってはグローバル変数をヘッダ内に定義するのが一般的なヘッダファイルです。 複数のソースファイルになったときに特に有効ですが、データ構造とプログラムとをファイルによって切り分けることによりドキュメント性が高まります。

関連するQ&A