プロが教える店舗&オフィスのセキュリティ対策術

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を用いた方法でお願いします。

A 回答 (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;

}
    • good
    • 0

提示されたコードの、どこからどこまでが


*.c
で、どこからどこまでが
*.h
ですか?

*.c

*.h
は同じフォルダーに置いてありますか?


ところで、ヘッダーファイルに関数の実体を書くのは
ちょっとどうなのかな?と思います。
宣言を書くんだったら普通ですけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!