組み込みアプリケーションでCLIPSの新しい事実をアサートしようとしています。 私は2つの方法を試みました: - 最初のアドバンストプログラミングガイドの74ページの例のようにassertを使用します。 - 2番目の方法は、assert-stringを使用することです。 私はそれぞれの方法だけでなく、2つの方法を一緒に試しました。クリップ組み込みアプリケーションでファクトをアサートできません
私はRUN_TIMEモジュールを使用しています。私のコードは正しい構文(defrulesとdeftemplates)を出力しますが、新しい事実はアサートされません。最初の事実だけがそこにあります。どうしてか分かりません!ここで
は私のコードです:私のコードで間違っている
#include "clips.h"
int main()
{
void *theEnv, *newFact, *templatePtr;
DATA_OBJECT theValue;
extern void *InitCImage_1();
theEnv = InitCImage_1();
EnvReset(theEnv);
// One way
templatePtr = EnvFindDeftemplate(theEnv, "Navigation");
newFact = EnvCreateFact(theEnv, templatePtr);
if (newFact == NULL) return -1;
theValue.type = SYMBOL;
theValue.value = EnvAddSymbol(theEnv, "Auto");
EnvPutFactSlot(theEnv, newFact, "FlightStatus", &theValue);
EnvAssert(theEnv, newFact);
// The other way
EnvAssertString(theEnv, "(Navigation (FlightStatus Auto))");
EnvRun(theEnv,-1);
EnvListDeftemplates(theEnv, "stdout", NULL);
EnvListDefrules(theEnv, "stdout", NULL);
EnvListDeffacts(theEnv, "stdout", NULL);
}
何?
多くのありがとう@Gary。それは今働いている。 –