gpt4 book ai didi

c++ - 强制函数内的静态常量在开始时进行评估?

转载 作者:行者123 更新时间:2023-11-30 02:56:31 27 4
gpt4 key购买 nike

考虑以下程序:LWS

#include <iostream>
#include <chrono>

void test()
{
static const std::chrono::high_resolution_clock::time_point marker
= std::chrono::high_resolution_clock::now();
std::cout<<marker.time_since_epoch().count()<<std::endl;
}

int main(int argc, char* argv[])
{

std::cout<<std::chrono::high_resolution_clock::now()
.time_since_epoch().count()<<std::endl;
std::cout<<"--------"<<std::endl;
test();
std::cout<<"--------"<<std::endl;
test();
return 0;
}

使用 g++,结果是:

1363389335665993
--------
1363389335666701
--------
1363389335666701

这意味着 markertest() 函数中的静态常量在第一次调用该函数时被计算。有没有办法或技巧(除了将 marker 声明为全局变量)在程序开始时强制评估 marker

最佳答案

没有。函数中的静态在第一次调用函数时进行评估。如果您需要更快地对其进行评估,则必须将其设为全局。一种替代方法是在程序开始时简单地调用该函数,以便在您实际需要该函数之前评估静态。

关于c++ - 强制函数内的静态常量在开始时进行评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15443647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com