VisualStudio 2010 Express-C++上的RDTSC不支持default-int

RDTSC on VisualStudio 2010 Express - C++ does not support default-int

本文关键字:不支持 default-int RDTSC 上的 2010 Express-C++ VisualStudio      更新时间:2023-10-16

我尝试在VisualStudio 2010上测试rdtsc。这是我的代码:

#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 settingsstudentdesktoptest_rdtsctest_rdtscmain.cpp(12): error C2146: syntax error : missing ';' before identifier 'rdtsc'
c:documents and settingsstudentdesktoptest_rdtsctest_rdtscmain.cpp(12): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:documents and settingsstudentdesktoptest_rdtsctest_rdtscmain.cpp(13): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:documents and settingsstudentdesktoptest_rdtsctest_rdtscmain.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

您必须使用#include <stdint.h>。或者(更好)#include <cstdint>

Visual Studio从2010版本开始提供这些标头。

要使其工作,必须包含cstdint:

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

cstdint是C样式标头stdint.h的C++样式版本。然后,在您的情况下,最好使用第一个,即使两者都在C++中工作。

这里说的是,自2010年版本以来,这些标题都随visualstudio一起提供。

您显然没有在顶部包含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;
}
相关文章: