Notice : 内容無保証。禁無断転載。リンク自由。

chello.h

#ifndef _chello_h_
#define _chello_h_

// 提供者が自分用に作ったファイル

class Chello {
public:
    void say(void) {printf("Hello, World.\n") ;}
} ;

#endif /* _chello_h_ */

c_func.h

#ifndef _c_func_h_
#define _c_func_h_

// 提供者が作る、提供関数のプロトタイプ宣言
// ユーザの .C ファイルでインクルードされるので、
// C++ 専用の機能 (クラス etc.) はこの中では使ってはならない。

void hello(void) ;

#endif /* _c_func_h_ */

c_func.cpp

#include <stdio.h>

#include "chello.h"

extern "C" {
  // .C でもインクルードされるファイルを .CPP でインクルードする時には、
  // このように extern "C" としてインクルードする。
#include <c_func.h>
}

// 提供者が作る、提供関数の実装ファイル

void hello(void){
    Chello  hello ;

    hello.say() ;
}

c_cpp_4.c

// ユーザが作る .C ファイル

#include <c_func.h>  // 提供された関数のプロトタイプ宣言

int main(int argc, char* argv[])
{
    hello() ;   // 提供された関数の使用

    return 0 ;
}

戻る
トップページへ戻る