如何在c++函数中声明和初始化静态int

How can I declare and initialise a static int in c++ function?

本文关键字:初始化 静态 int 声明 c++ 函数      更新时间:2023-10-16

你能帮我吗?我受够了这个静态int变量....这是我的函数。我希望它的值static int ban_ve在第一个函数访问时为0我希望每次程序访问该方法时,计算机都增加它,以检测程序是否访问了两次程序。

void iCol::attCalc() //juste une fois cpt test
{
  static int ban_ve;  // how can I initialize it to 0 and only the first 
  if (ban_ve>0)
  {
    printf(" hello tu es dedans ....n");
    _getch();
    exit(0);
  }
    attConD = OdemoConInfo(GetStdHandle(STD_OUTPUT_HANDLE)) ;
    carConD = attConD % 16;  //  couleur de caractere par modulo carConD
    bckConD = attConD - carConD;
    bckConCH = bckConD / 16;  //  car hexa couleur de fond  (ex F)
    printf("attcalc attConD %d carConD %d bckConD %d bckConCH %d n",attConD, carConD ,bckConD ,bckConCH );
    ban_ve++;
}

static int ban_ve声明为全局变量,并在每次调用函数时增加它:

static int ban_ve = 0;
void iCol::attCalc()
{
    ban_ve++;
    //rest of code
}

只写static int ban_ve = 0;

保证ban_ve只初始化一次。

[stmt.dcl]:

所有块作用域变量的零初始化(8.5)存储时长(3.7.1)或线程存储时长(3.7.2)为在任何其他初始化发生之前执行。常数初始化具有静态存储的块作用域实体(3.6.2)Duration(如果适用)在其块第一个执行之前执行进入。允许提前执行一个实现用静态或线程初始化其他块作用域变量与实现相同条件下的存储持续时间允许使用static或thread静态初始化变量命名空间范围内的存储时间(3.6.2)。否则这样一个变量在控件第一次通过其声明时初始化;这样的变量在完成它的初始化。如果通过抛出异常退出初始化,初始化未完成,因此将在下次重试时间控制进入声明。如果控件进入声明当变量被初始化时,并发的执行应等待初始化完成如果控件递归地重新进入声明在初始化时,行为是未定义的。