#ifndef _chello_h_ #define _chello_h_ // 提供者が自分用に作ったファイル class Chello { public: void say(void) {printf("Hello, World.\n") ;} } ; #endif /* _chello_h_ */
#ifndef _c_func_h_ #define _c_func_h_ // 提供者が作る、提供関数のプロトタイプ宣言 // ユーザの .C ファイルでインクルードされるので、 // C++ 専用の機能 (クラス etc.) はこの中では使ってはならない。 void hello(void) ; #endif /* _c_func_h_ */
#include <stdio.h> #include "chello.h" extern "C" { // .C でもインクルードされるファイルを .CPP でインクルードする時には、 // このように extern "C" としてインクルードする。 #include <c_func.h> } // 提供者が作る、提供関数の実装ファイル void hello(void){ Chello hello ; hello.say() ; }
// ユーザが作る .C ファイル #include <c_func.h> // 提供された関数のプロトタイプ宣言 int main(int argc, char* argv[]) { hello() ; // 提供された関数の使用 return 0 ; }