为什么常量CLOCKS_PER_SEC不需要用std ::命名空间,但是<ctime> clock()和clock_t呢?

时间:2018-02-05 23:31:23

标签: c++ c++11 c++14

我正在试用<ctime>库以获得类型感,clock_tclock()函数和常量CLOCKS_PER_SEC。我注意到我必须将clock_tclock()命名为std::,而不是CLOCKS_PER_SEC。这是为什么? CLOCKS_PER_SEC如何自行浮动?

#include <ctime>
#include <iostream>

int main() {
  std::clock_t start;
  double duration;

  start = std::clock();

  for (long int i = 0; i < 10000000000; i ++){
    // do something
  }

  duration = ( clock() - start ) / (double) CLOCKS_PER_SEC;

  std::cout << duration << std::endl;
}

2 个答案:

答案 0 :(得分:9)

CLOCKS_PER_SEC(以及全部大写的大多数其他名称)是预处理器宏。宏不参与C ++命名空间系统,因为如果它们这样做,使用它们的代码将与C不兼容,C当然没有命名空间。

答案 1 :(得分:-3)

正如所指出的那样,这是一个宏观。因此,它在#include

中定义

您可以查看参考资料:

CLOCKS_PER_SEC reference

ctime reference