C++ 使代码在MSVC+中工作的变通方法+;2010年到期;不允许使用类型名称";

C++ 使代码在MSVC+中工作的变通方法+;2010年到期;不允许使用类型名称";,c++,visual-studio-2010,unsigned,short,openni,C++,Visual Studio 2010,Unsigned,Short,Openni,我正在尝试实现一个手指检测,这个链接是给定的。我正在浏览MSVC2010中的代码,它给出的错误如下图所示。有人能告诉我为什么下面的代码给我错误吗?这是否与下列问题有关?有可能的解决办法吗?我已经包括: #include <cstdint> #include <stdint.h> 但没有起作用 谢谢 ikel原因是近处和远处已经将定义为其他事物。如果您已经包含了带有以下宏的windows.h,其中包括windef.h,则这是典型的情况: #define far #de

我正在尝试实现一个手指检测,这个链接是给定的。我正在浏览MSVC2010中的代码,它给出的错误如下图所示。有人能告诉我为什么下面的代码给我错误吗?这是否与下列问题有关?有可能的解决办法吗?我已经包括:

#include <cstdint> 
#include <stdint.h>
但没有起作用

谢谢


ikel

原因是
近处
远处
已经将定义为其他事物。如果您已经包含了带有以下宏的
windows.h
,其中包括
windef.h
,则这是典型的情况:

#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
#define pascal __stdcall
#else
#define pascal
#endif

尝试将名称更改为类似于
plane\u near
plane\u far
的名称,它会起作用。

不要同时包含
cstdint
stdint.h
。他们指的是同一件事,但是
cstdint
是正确的使用方法。@nyarlathotep感谢您的输入。我将删除stdint.h。或者(更容易)只删除
#undef
它们。另请参见我不使用
windows.h
windef.h
我将试一试。@Zdeslav Vojkovic,谢谢。成功了!我只是重命名了这两个变量。很高兴它起作用了。但是,在您的情况下,它们很可能来自其他位置(“转到声明”将显示您的位置)<如果在.cpp文件中执行,则代码>未定义是安全的(通常在32位平台上是安全的-这是一项兼容性“功能”)。
#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
#define pascal __stdcall
#else
#define pascal
#endif