C言語の資産を利用 (C++をもう一度)
[履歴] (2014/12/29 02:27:59)

サンプルコード

メルセンヌ・ツイスタなど、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
関連ページ