Ниже приведена ситуация.Существует система / программное обеспечение, полностью написанное на C. Эта C-программа порождает новый поток, чтобы запустить какой-то механизм обработки данных, написанный на C ++.Следовательно, система, которая у меня есть, запускает 2 потока (основной поток и поток механизма обработки данных).Теперь я написал некоторую функцию на C, которая принимает структуру C и передает ее потоку обработки данных, чтобы функция C ++ могла получить доступ к структуре C.При этом я наблюдаю, что значения определенных полей (например, unsigned int) в структуре C изменяются при доступе на стороне C ++, и я не уверен, почему.В то же время, если я передаю примитивный тип данных, например, int, значение не меняется.Было бы здорово, если бы кто-то мог объяснить мне, почему он так себя ведет.Ниже приведен код, который я написал.`
/* 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.
}
` Кроме того, обе эти функции находятся в разных исходных файлах (одна с .c ext, а другая с .cc ext)