Надеюсь, я объясняю это правильно, но у меня возникла странная проблема со структурой в программе, над которой я работаю.Короче говоря, у меня есть две структуры, настроенные следующим образом:
ParentStructure.h
#include "ChildStructure.h"
struct ParentStructure {
struct ChildStructure A;
struct ChildStructure B;
struct ChildStructure C;
struct ChildStructure D;
};
ChildStructure.h
struct ChildStructure {
short A;
short B;
};
Проблема, с которой я сталкиваюсь, состоит в том, что одна из переменных в ParentStructure
(то есть ParentSturcutre.D
) имеет значения D.A
и D.B
, которые перезаписываются во время выполнения программы.Мне кажется, что это связано с тем, как устроена структура, например, когда два значения в дочерней структуре (т. Е. A.A
и A.B
) одинаковы, все работает правильно;однако, когда они различаются, значения D.A
и D.B
возвращаются к их исходным значениям, когда программа выполняется после изменения на D.A
или D.B
.
С точки зрения вызова функций общий поток выглядит следующим образом:
main.c
#define WorkingDefaultAA 10 /* Program executes correctly */
#define WorkingDefaultAB 10
#define NonWorkingDefaultAA 10 /* Program does not execute correctly */
#define NonWorkingDefaultAB 8
struct ParentStructure *data;
int main(int argc, char *argv[]) {
/* Set the default values for the data */
while (true) {
FunctionA(data);
}
}
ProcessData.c
void FunctionA(struct ParentStructure *data) {
/* Use data */
FunctionB(data);
}
void FunctionB(struct ParentStructure *data) {
data->D.A = 1;
data->D.B = 1;
}
Есть идеи о том, что может происходить?