Я использую библиотеку SystemC для создания некоторых модулей для моделирования. SystemC производит симуляции, поэтому необходимо установить timestep (в моем случае 1 мс каждый). Проблема в том, что у меня есть циклическая зависимость между некоторыми функциями и переменными. Звучит глупо, но это лучше, чтобы увидеть кусок кода, чтобы понять:Циркулярная зависимость переменной в C++
FP = 1;
function drag()
{
return (a + FP + b);
}
function disc()
{
return (c/drag());
}
function speed()
{
return (disc()/d);
}
Метод выполняется каждый milisecond является:
function process()
{
double s = speed();
FP = FP + s;
cout << FP;
}
Как вы можете видеть, существует косвенная зависимость между FP и скорость(). Это возвращает странное значение, и оно всегда одно и то же. Я ожидал, что process() действительно будет выполнен каждые миллисекунды, поэтому у него есть время, чтобы обновить значения до его повторного вызова. Это потому, что это не так? Может быть, это потому, что все установлено во время компиляции? Есть ли способ для double s или Скорость будет «вызываться» только во время выполнения?
Любые идеи были бы очень желанными :) Спасибо!
Кто вызывает процесс() и откуда берутся другие переменные? – ghembo
Все ли используют одну и ту же переменную 'FP'? Я имею в виду, что любые местные жители/'статические 'участвуют? – Angew
Является ли 'process()' предположительно вызываться асинхронно (каждый мс)? Тогда обновление 'FP' без блокировки не будет хорошей идеей. –