Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] problem z kompilacją programu z timespec

Ostatnio zmodyfikowano 2015-11-05 10:11
Autor Wiadomość
robaczek122
Temat założony przez niniejszego użytkownika
[c++] problem z kompilacją programu z timespec
» 2015-11-04 21:19:14
Chciałem przetestować kod z forum:
http://stackoverflow.com/questions/2872543/printf-vs-cout-in-c/2873251#2873251

C/C++
#include <stdio.h>
#include <iostream>
#include <ctime>

class TimedSection {
    char const * d_name;
    timespec d_start;
public:
    TimedSection( char const * name )
        : d_name( name )
    {
        clock_gettime( CLOCK_REALTIME, & d_start );
    }
    ~TimedSection() {
        timespec end;
        clock_gettime( CLOCK_REALTIME, & end );
        double duration = 1e3 *( end.tv_sec - d_start.tv_sec ) +
        1e - 6 *( end.tv_nsec - d_start.tv_nsec );
        std::cerr << d_name << '\t' << std::fixed << duration << " ms\n";
    }
};

int main() {
    const int iters = 10000000;
    char const * text = "01234567890123456789";
    {
        TimedSection s( "cout with only endl" );
        for( int i = 0; i < iters; ++i )
             std::cout << std::endl;
       
    }
    {
        TimedSection s( "cout with only '\\n'" );
        for( int i = 0; i < iters; ++i )
             std::cout << '\n';
       
    }
    {
        TimedSection s( "printf with only '\\n'" );
        for( int i = 0; i < iters; ++i )
             printf( "\n" );
       
    }
    {
        TimedSection s( "cout with string constant and endl" );
        for( int i = 0; i < iters; ++i )
             std::cout << "01234567890123456789" << std::endl;
       
    }
    {
        TimedSection s( "cout with string constant and '\\n'" );
        for( int i = 0; i < iters; ++i )
             std::cout << "01234567890123456789\n";
       
    }
    {
        TimedSection s( "printf with string constant and '\\n'" );
        for( int i = 0; i < iters; ++i )
             printf( "01234567890123456789\n" );
       
    }
    {
        TimedSection s( "cout with some stuff and endl" );
        for( int i = 0; i < iters; ++i )
             std::cout << text << "01234567890123456789" << i << std::endl;
       
    }
    {
        TimedSection s( "cout with some stuff and '\\n'" );
        for( int i = 0; i < iters; ++i )
             std::cout << text << "01234567890123456789" << i << '\n';
       
    }
    {
        TimedSection s( "printf with some stuff and '\\n'" );
        for( int i = 0; i < iters; ++i )
             printf( "%s01234567890123456789%i\n", text, i );
       
    }
}


Niestety podczas kompilacji pokazują się błędy
C/C++
| 7 | error: 'timespec' does not name a type |
|| In constructor 'TimedSection::TimedSection(const char*)':|
| 12 | error: 'CLOCK_REALTIME' was not declared in this scope |
| 12 | error: 'd_start' was not declared in this scope |
.
.
.
||=== Build finished: 10 errors, 0 warnings( 0 minutes, 0 seconds ) === |

Googlowałem że może timespec d_start; powinien być jako struct timespec d_start, ale jednak nie pomogło.
P-139655
j23
» 2015-11-05 10:11:58
Według dokumentacji timespec weszło do standardu C dopiero od '11 roku, więc pytanie jest takie, czy twoje środowisko zawiera najnowsze pliki biblioteczne dla C.

Dlaczego nie użyjesz funkcji z biblioteki std::chrono?
P-139664
« 1 »
  Strona 1 z 1