以下はその状況です。 Cで完全に書かれたシステム/ソフトウェアがあります。このCプログラムは、C++で書かれたある種のデータ処理エンジンを起動するための新しいスレッドを生成します。したがって、私が持っているシステムは、2つのスレッド(メインスレッドとデータ処理エンジンスレッド)を実行します。さて、私はCでstructを取り、データ処理スレッドに渡してC++関数がCの構造体にアクセスできるようにする関数をCで記述しました。そうしている間、私は、C言語の側でアクセスされたときにC言語の構造体の特定のフィールド(unsigned intなど)の値が変化していることに気づいています。同時に、intのようなプリミティブなデータ型を渡すと、値は変化しません。それがなぜこのように振る舞うのか誰かが私に説明することができれば素晴らしいだろう。以下は、私が書いたコードです。 `CおよびC++コードの相互運用性 - データ受け渡しの問題
/* C++ Function */
void DataProcessor::HandleDataRecv(custom_struct* cs)
{
/*Accesses the fields in the structure cs - an unsigned int field. The value of
field here is different from the value when accessed through the C function below.
*/
}
/*C Function */
void forwardData(custom_struct* cs)
{
dataProcessor->HandleDataRecv(cs); //Here dataProcessor is a reference to the object
//of the C++ class.
}
` また、これらの機能の両方が、一部の例外を除き、別のソースファイル(.ccに内線との.c EXTや他との1)
あなたのコードはどのプラットフォームで実行していますか?どのコンパイラ/リンカファミリですか? – ObscureRobot
私はlinuxでコードを実行していて、gccを使ってCとC++の両方のファイルをコンパイルします – Saravana
g ++でC++ファイルをコンパイルしていませんか? –