他の.cを呼ぶには

[戻る]
vds 2007/10/08(月) 08:05:06
VC++6を使用しています。
同じプロジェクトの中で、a.cとb.cがあります。
a.cからb.cを呼ぶ、a.c内でのコーディング方法は
どうなるのでしょうか?

επιστημη [HomePage] 2007/10/08(月) 08:26:14
----------------- 例 ---------------

--- 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;
}

Ban 2007/10/08(月) 12:37:37
VC6は忘却のかなたですが、.cだと、明示的に設定を変えなければ
(C++ではなく)C言語になりませんでしたっけ。

# てか、<stdio.h>なのにstd::coutの時点で単純ミスっぽい気も。

επιστημη [HomePage] 2007/10/08(月) 13:03:30
> てか、<stdio.h>なのにstd::coutの時点で単純ミスっぽい気も。

ぐげー

επιστημη [HomePage] 2007/10/08(月) 13:07:43
仕切り直し:

--- 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;
}

PATIO 2007/10/11(木) 16:19:49
最終的にはリンクされて一つの実行ファイルになるのだから
呼び出そうとしている対象のプロトタイプがわかれば、
OKですね。
επιστημηさんが書かれているのはそういう事です。

通常は、使い回しまで考慮してヘッダーファイルに関数のプロトタイプを
かいて、使う側のソースファイルにインクルードします。
基本的には標準関数と使いたい時に対応するヘッダーファイルを
インクルードするのと同じ事です。

古いスレッドには追加発言できません。