一、 源程序
using namespace std::literals::chrono_literals;
timer_ = this->create_wall_timer(
500ms, std::bind(&ParametersBasicNode::timer_callback, this));
二、解析
using namespace std::literals::chrono_literals是C++11中引入的一种新特性,叫做用户定义字面量(User-defined literals)。
这里的含义是将命名空间std::literals::chrono_literals中的时间单位字面量带入到当前的作用域中,免去了每次使用时间单位时都需要加上该命名空间前缀的麻烦。
- std::literals::chrono_literals命名空间提供了几个时间单位的后缀:
s表示秒
ms表示毫秒
us表示微秒
ns表示纳秒
- 在代码中,500ms表示500毫秒。使用了命名空间后,可以直接在代码中使用这些后缀,而不必每次都写成std::chrono::milliseconds(500)的形式。这使得代码更加简洁易读。
至于namespace的作用范围,在using namespace语句执行之后到当前作用域结束之前,所有在该命名空间中定义的名字都会在当前作用域可见,因此需要谨慎使用。