0

プログラムは次のとおりです。

タイマー.cpp:

#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <time.h>

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

    #define BILLION  1E9
    struct timespec requestStart, requestEnd;

    // Calculate time taken by a request                                                                                                                                        
    clock_gettime(CLOCK_REALTIME, &requestStart);

    //function_call();      // time this                                                                                                                                                    

    clock_gettime(CLOCK_REALTIME, &requestEnd);

    // Calculate time it took                                                                                                                                                   
    double accum = ( requestEnd.tv_sec - requestStart.tv_sec )
        + (( requestEnd.tv_nsec - requestStart.tv_nsec ) / BILLION);
    cout << accum << endl;   
}

Mac OSX 10.8.5 では、次の 2 つのコンパイラにアクセスできます。Apple LLVM バージョン 4.2 (clang-425.0.28)は として呼び出されc++gcc バージョン 4.2.1 (うわー、古いです) は として呼び出されg++ます。

c++ timer.cpp:

error: use of undeclared identifier 'CLOCK_REALTIME'
clock_gettime(CLOCK_REALTIME, &requestStart);

g++ timer.cpp:

timer.cpp: In function ‘int main(int, char**)’:
timer.cpp:15: error: ‘CLOCK_REALTIME’ was not declared in this scope
timer.cpp:15: error: ‘clock_gettime’ was not declared in this scope

私は何かを省略していますか、それとも古いコンパイラで作業しているだけですか?

更新このソリューションが、OSX 10.8.5 の標準の c++ および g++ コンパイラおよびライブラリで動作することを確認しました。

4

0 に答える 0