簡體   English   中英

C ++名稱從<time.h>查找函數

[英]C++ names lookup for functions from <time.h>

我正在使用C ++ 11,我遇到了一個問題,我幾天都想不通。

基本上我有一個像這樣的頭文件:

#include <time.h>
#include <sys/time.h>

namespace MyNamespace {

static double get_wall_time(){
        struct timeval time;
        if (gettimeofday(&time,NULL)){
                return 0;
        }
        return (double)time.tv_sec + (double)time.tv_usec * .000001;
}

static double get_cpu_time(){
        return (double)clock() / CLOCKS_PER_SEC;
}

}

我的愚蠢問題是為什么在我自己的命名空間中定義的函數(get_cpu_time,get_wall_time)能夠使用std命名空間(gettimeofday和clock)中存在的函數而沒有“std ::”限定符。 我已經使用這個頭文件一段時間了,它工作正常。 我認為它與名稱查找機制有關,但我找不到確切的規則

提前感謝您的回復!

沒問題。

因為它們來自C頭time.hsys/time.h ,所以這些名稱在全局命名空間中, 而不是std::

您包含的標頭是C語言遺留。 因此,在那里聲明的函數是不在std中的全局命名空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM