サンプルコード
メルセンヌ・ツイスタなど、C言語で記述されたライブラリをC++から利用するためには extern "C" を利用します。その際、組み込みマクロ __cplusplus を利用するとC言語からもC++からも利用できるヘッダファイルを作成できます。
sub.h
#ifndef SUB_H_
#define SUB_H_
#ifdef __cplusplus
extern "C" {
#endif
void my_func_c();
#ifdef __cplusplus
}
#endif
#endif // #ifndef SUB_H_
sub.c
#include "sub.h"
#include <stdio.h>
void my_func_c() {
printf("my_func_c\n");
}
main.cpp
// extern "C" {
#include "sub.h"
// } // としてもよい (ヘッダファイルがC++対応していない場合)
#include <iostream>
using namespace std;
int main() {
my_func_c(); //=> my_func_c
return 0;
}
Makefile
CFLAGS = -g -Wall
ALL: main.o sub.o
g++ $(CFLAGS) -o main main.o sub.o
main.o: main.cpp sub.h
g++ $(CFLAGS) -o main.o -c main.cpp
sub.o: sub.c sub.h
gcc $(CFLAGS) -o sub.o -c sub.c
0
低レイヤーのプログラミングとOS開発が趣味。C言語を使っています。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。


