所以我一直在调试它,正如Gary提到的,问题完全出在别的地方。我用一个已经指向现有事实(可以说是事实堆栈上)的地址断言一个事实。不知道我在想什么。。。
void* ifs_template = EnvFindDeftemplate(clips_environment_,
"InitialAndFinalState");
void* ifs_fact = EnvCreateFact(clips_environment_, ifs_template);
if (ifs_fact != NULL) {
DATA_OBJECT field;
field.type = FACT_ADDRESS;
OLD-CODE: field.value = EnvAssert(clips_environment_,
addSpinWaveToClipsEnvironment(initial_state));
NEW-CODE: field.value =
addSpinWaveToClipsEnvironment(initial_state);
EnvPutFactSlot(clips_environment_, ifs_fact, "initial_state", &field);
addSpinWaveToClipsEnvironment()函数创建一个新的SpinWave事实(如果不存在),并返回该事实的事实地址。