C++プロジェクトがあるとします。 C++プロジェクトのCファイルで定義されている関数をextern "C"
というキーワードで使うことができます。例:CファイルでC++メソッドを定義できますか?
Cコード:cfile.c
#include <stdio.h>
void f(void)
{
printf("\n This is a C code\n");
}
CPPコード:cppfile.cpp
ので#include <iostream>
extern "C" {
void f();
}
int main(void)
{
f();
return 0;
}
、我々は行うことができます逆の場合のために:
Cppコード:cppCode.cpp
struct MyClass
{
virtual void f(const char* text);
void func(const char* text);
};
我々はf
方法や(例えば:cCode.c)Cファイル内func
方法実装することができますを???それは可能ですか? (私の個人的な目的のための質問)
いいえ、クラスメンバ関数は常にC++言語のリンケージを持っているため、C言語の翻訳単位でエクスポートされた関数には一致しません。 –
@KerrekSBオプションで編集できませんか? –
@GillBates、いいえ、呼び出し規約が異なるため不可能です。 Cコンパイラはクラスメソッドに対する適切な呼び出しを生成できません。 – SergeyA