c++ visual-studio-2010 visual-studio rdtsc

RDTSC en VisualStudio 2010 Express-C++ no es compatible con default-int



visual-studio-2010 visual-studio (3)

Traté de probar rdtsc en VisualStudio 2010. Aquí está mi código:

#include <iostream> #include <windows.h> #include <intrin.h> using namespace std; uint64_t rdtsc() { return __rdtsc(); } int main() { cout << rdtsc() << "/n"; cin.get(); return 0; }

Pero tengo errores:

------ Build started: Project: test_rdtsc, Configuration: Debug Win32 ------ main.cpp c:/documents and settings/student/desktop/test_rdtsc/test_rdtsc/main.cpp(12): error C2146: syntax error : missing '';'' before identifier ''rdtsc'' c:/documents and settings/student/desktop/test_rdtsc/test_rdtsc/main.cpp(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:/documents and settings/student/desktop/test_rdtsc/test_rdtsc/main.cpp(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:/documents and settings/student/desktop/test_rdtsc/test_rdtsc/main.cpp(14): warning C4244: ''return'' : conversion from ''DWORD64'' to ''int'', possible loss of data ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

¿Que debería hacer? No quiero cambiar uint64_t en DWORD64 . ¿Por qué VisualStudio no entiende uint64_t ?


No ha incluido stdint.h / cstdint en la parte superior aparentemente. Esto funcionará:

#include <iostream> #include <windows.h> #include <intrin.h> #include <stdint.h> using namespace std; uint64_t rdtsc() { return __rdtsc(); } int main() { cout << rdtsc() << "/n"; cin.get(); return 0; }


Para que esto funcione, debes incluir cstdint :

#include <cstdint> // Or <stdint.h>

cstdint es la versión de estilo C ++ del encabezado de estilo C stdint.h . Entonces es mejor en su caso usar el primero incluso si ambos están trabajando en C ++.

Aquí se dice que esos encabezados se envían con Visual Studio desde la versión de 2010.


Tienes que #include <stdint.h> . O (mejor) #include <cstdint> .

Visual Studio comenzó a enviar esos encabezados con la versión 2010.