• 締切済み

C言語でヘッダファイルを自作する

C言語で#defineを用いてヘッダファイルを作成したのですが、 作成したコンパイルするときにヘッダファイルがオープンできません。 参考にしている資料があるのですが、そこに書かれているサンプルプログラムを 丸ごとコピーして作ったプログラムも同様にヘッダファイルがオープンできない というエラーが出るので、ヘッダファイルを定義する方法そのものが間違っていると 思うのですが、どこが間違っているのでしょうか? よろしければ正しい記述方法もお教えください。 #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H wa(int a, int b) { return a+b; } #endif #include "sample.h" int main(){ printf("%d\n",wa(40,70)); return 0; } ヘッダファイルの定義の方法は他にもあるとは思いますが、 今回は#defineを用いた方法でお願いします。

みんなの回答

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2

#defineは置き換えマクロであってヘッダファイルを定義するものではありません。ですから #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H int wa(int a, int b) { return a+b; } #endif int main(){ printf("%d\n",wa(40,70)); return 0; } ならOKです。まあちょっと中途半端ですね。関数マクロになっていないですし。 int wa(int a, int b) { return a+b; } の部分だけを別ファイルに保存しておいてincludeすればできますけど。 関数形式マクロなら #include <stdio.h> #define wa(a,b) ((a)+(b)) int main(){ printf("%d\n",wa(40,70)); return 0; }

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

提示されたコードの、どこからどこまでが *.c で、どこからどこまでが *.h ですか? *.c と *.h は同じフォルダーに置いてありますか? ところで、ヘッダーファイルに関数の実体を書くのは ちょっとどうなのかな?と思います。 宣言を書くんだったら普通ですけど。