我正在编写一个在每个循环中调用的函数。在这个函数中,我定义了一个变量
bool forceDisplacementLaw(ContactModelMechanicalState *state) {
bool max_check = false
//something here
if ((nsmax >= pbProps_->pb_ten_)) {
max_check = true;
}
}
max_check
现在将在我的函数中更改为true
,我希望永远保持真实。但是,我在代码的开头定义了max_check
,并再次将其初始化为false
。
当永久转向true
时,有没有办法让它保持正确?
答案 0 :(得分:4)
您可以将其定义为静态。
program_%: CFILE=path/program_%/do_it.c
^^^^^^^^^^
This does not work
答案 1 :(得分:1)
我认为StoryTeller对你说得对。考虑
public void forward(string $actionName, string $controllerName=NULL, string $extensionName=NULL, array $arguments=NULL)
protected void redirect(string $actionName, string $controllerName=NULL, string $extensionName=NULL, array $arguments=NULL, integer $pageUid=NULL, int $delay=0, int $statusCode=303)
当首先调用f时, int f()
{
static int timesCalled = 0;
timesCalled++;
cout << "f has been called " << timesCalled << " times.\n";
// actual work goes here
}
将被初始化为0,然后在增量之后保留其值(是的,初始化仅执行一次,尽管出现!)
答案 2 :(得分:-1)
使用静态局部变量。静态变量在函数调用之间保持其值:
bool forceDisplacementLaw(ContactModelMechanicalState *state) {
static bool max_check = false;
//something here
if ((nsmax >= pbProps_->pb_ten_)) {
max_check = true;
}
}
或者改为使用全局变量:
static bool max_check = true;
//...
bool forceDisplacementLaw(ContactModelMechanicalState *state) {
//something here
if ((nsmax >= pbProps_->pb_ten_)) {
max_check = true;
}
}