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.