C++言語では、C言語の仕様を含むため、C言語の記述ができます。
しかし、C言語とC++言語のコンパイルの仕方に違いがあり、
完全にC言語でコンパイルされたライブラリ、オブジェクトファイルなどを
C++言語から使う場合には、リンケージ指定と言う機能を使う事になります。
リンケージ指定すると、「その部分はC言語でコンパイルされている部分だから
適切に処理してくれ。」とコンパイラに教える役目を果たします。
例えば、C言語で作ったライブラリmylib.libがあり、そのヘッダファイルは、
mylib.hの場合、それをC++言語から使うならば、以下のような記述が必要です。
extern "C"
{
#include "mylib.h"
}
|
このextern "C"で囲まれたブロックがリンケージ指定された部分と言う意味です。
関数単位でリンケージ指定する
ある特定の関数をC言語スタイルでコンパイルしたい場合も
リンケージ指定を使います。
この場合、関数のプロトタイプ宣言のみをリンケージ指定すればOKです。
extern "C"
{
void func1(void);
void func2(void);
}
|
標準ライブラリ関数について
C言語標準のライブラリ関数はC言語でコンパイルされているので、
リンケージ指定が必要ではないか?と思われるかもしれませんが、
見えないところでリンケージ指定をやってくれているコンパイラが多いようなので、
通常、気にする事はほとんどありません。
スポンサードリンク
|