VC++6を使用しています。
同じプロジェクトの中で、a.cとb.cがあります。
a.cからb.cを呼ぶ、a.c内でのコーディング方法は
どうなるのでしょうか?
----------------- 例 ---------------
--- b.h ---
#ifndef B_H__
#define B_H__
int add(int x, int y);
#endif
--- b.c ---
#include b.h
int add(int x, int y) {
return x + y;
}
--- a.c ---
#include <stdio.h>
#include b.h
int main() {
std::cout << add(1,2) << std::endl;
return 0;
}
VC6は忘却のかなたですが、.cだと、明示的に設定を変えなければ
(C++ではなく)C言語になりませんでしたっけ。
# てか、<stdio.h>なのにstd::coutの時点で単純ミスっぽい気も。
> てか、<stdio.h>なのにstd::coutの時点で単純ミスっぽい気も。
ぐげー
仕切り直し:
--- b.h ---
#ifndef B_H__
#define B_H__
#ifdef __cplusplus
extern C {
#endif
int add(int x, int y);
#ifdef __cplusplus
}
#endif
#endif
--- b.c ---
#include b.h
int add(int x, int y) {
return x + y;
}
--- a.c ---
#include <stdio.h>
#include b.h
int main() {
printf(%d\n, add(1,2));
return 0;
}
最終的にはリンクされて一つの実行ファイルになるのだから
呼び出そうとしている対象のプロトタイプがわかれば、
OKですね。
επιστημηさんが書かれているのはそういう事です。
通常は、使い回しまで考慮してヘッダーファイルに関数のプロトタイプを
かいて、使う側のソースファイルにインクルードします。
基本的には標準関数と使いたい時に対応するヘッダーファイルを
インクルードするのと同じ事です。