RDTSC в VisualStudio 2010 Express — C ++ не поддерживает default-int

Я пытался проверить rdtsc на VisualStudio 2010. Вот мой код:

#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;
}

Но я получил ошибки:

------ 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 ==========

Что я должен делать? Я не хочу меняться uint64_t в DWORD64, Почему VisualStudio не понимает uint64_t?

2

Решение

Ты должен #include <stdint.h>, Или лучше) #include <cstdint>,

Visual Studio начала поставлять эти заголовки с версией 2010 года.

3

Другие решения

Чтобы это работало, вы должны включить cstdint :

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

cstdint такое версия заголовка C-style в стиле C ++ stdint.h, Тогда в вашем случае лучше использовать первый, даже если оба работают в C ++.

Говорят Вот что эти заголовки поставляются с Visual Studio начиная с версии 2010 года.

2

Вы не включили stdint.h / cstdint вверху. Это будет работать:

#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;
}
1
По вопросам рекламы [email protected]