C++ c++;11.使用chrono作为语法糖
我使用外部库中的函数,接口如下:C++ c++;11.使用chrono作为语法糖,c++,c++11,C++,C++11,我使用外部库中的函数,接口如下:void f(int timeout)。 其中,timeout以毫秒为单位。为了使我的代码更具可读性,我希望以以下形式使用chrono: f(std::chrono::milliseconds(10).count()); 有没有可能std::chrono::毫秒(10).count()!=10 是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将f(std::chrono::millists(10).count())转换为f(10) 不会。但要
void f(int timeout)代码>。
其中,timeout
以毫秒为单位。为了使我的代码更具可读性,我希望以以下形式使用chrono
:
f(std::chrono::milliseconds(10).count());
有没有可能std::chrono::毫秒(10).count()!=10
是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将f(std::chrono::millists(10).count())
转换为f(10)
不会。但要注意,结果不是毫秒,而是滴答声。所以std::chrono::seconds(10)。count()也是10。因此,您可能需要首先对std::chrono::millizes
变量进行赋值
否,因为该方法是constexpr
。所以任何好的编译器都应该尊重这一点
不会。但要注意,结果不是毫秒,而是滴答声。所以std::chrono::seconds(10)。count()也是10。因此,您可能需要首先对std::chrono::millizes
变量进行赋值
否,因为该方法是constexpr
。所以任何好的编译器都应该尊重这一点
有没有可能std::chrono::毫秒(10).count()!=10
否。您正在使用的是:
3) 用r
记号构造持续时间
简单地说:
返回此持续时间的刻度数
是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将f(std::chrono::millists(10).count())
转换为f(10)
没有。duration
构造函数是constexpr
,您正在使用的count()
成员函数也是如此-对于编译器来说,这应该是一个非常简单的优化
使我的代码更具可读性[…]
就我个人而言,我觉得这很可疑。如果f()
本身需要一个持续时间
,那么f(std::chrono::millises(10))
本身肯定比f(10)
好,还有一个额外的好处,那就是无论你传入什么持续时间都能正常工作。但是如果只需要一个int
,你只需要更多的输入就可以给自己一种安全的错觉。所以我个人不确定这是否更好
有没有可能std::chrono::毫秒(10).count()!=10
否。您正在使用的是:
3) 用r
记号构造持续时间
简单地说:
返回此持续时间的刻度数
是否有任何“水下岩石”阻止现代编译器(clang、gcc、VC++)将f(std::chrono::millists(10).count())
转换为f(10)
没有。duration
构造函数是constexpr
,您正在使用的count()
成员函数也是如此-对于编译器来说,这应该是一个非常简单的优化
使我的代码更具可读性[…]
就我个人而言,我觉得这很可疑。如果f()
本身需要一个持续时间
,那么f(std::chrono::millises(10))
本身肯定比f(10)
好,还有一个额外的好处,那就是无论你传入什么持续时间都能正常工作。但是如果只需要一个int
,你只需要更多的输入就可以给自己一种安全的错觉。所以我个人不确定这是否更好一个持续时间的计数本身是没有意义的,当你将它与另一个持续时间比较时才有意义。你也应该考虑使用<代码>运算符“MS < /COD>”。不是编写代码>代码:ST:::毫秒(10)只写<代码> 10ms 。语义糖一个持续时间的计数本身就没有意义,当你将它与另一个持续时间进行比较时,它才有意义。你还应该考虑使用<代码>运算符“MS < /Cord>”。不要写std::chrono::毫秒(10)
只要写10ms
。所以你认为,当你看到f(10)
在code中,您需要打开文档以找出接受超时的单位f
比f(std::chrono::millides(10.count())
哪个文档本身?@user1244932,并且f
是否以秒为单位超时?无论哪种方式,它都不再是自文档化的f(10);//毫秒
或等效值。所以你认为,当你看到f(10)
在code中,您需要打开文档以找出接受超时的单位f
比f(std::chrono::millides(10.count())
哪个文档本身?@user1244932,并且f
是否以秒为单位超时?无论哪种方式,它都不再是自文档化的f(10);//毫秒
或等效值。