2012-09-17 45 views
1

我試圖實施手指檢測,該鏈接給出的是here。我正在閱讀MSVC2010中的代碼,它給了我如圖所示的錯誤,如下所示。有人能告訴我爲什麼下面的代碼給我錯誤?這與以下問題有關嗎? 123?有沒有可能的解決方法?我已經包含:由於「不允許輸入類型名稱」而導致代碼在MSVC++ 2010中工作的解決方法

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

我也試過:

unsigned short depth = (unsigned short) (v[2] * 1000.0f); // hand depth 
unsigned short near = (unsigned short) (depth - 100); // near clipping plane 
unsigned short far = (unsigned short) (depth + 100); // far clipping plane 

,但沒有奏效。

Figure1. Error: Type name is not allowed

感謝,

ikel

+2

不包括'cstdint'和'stdint.h'。他們指的是同樣的事情,但'cstdint'是適合使用的。 – codeling

+0

@nyarlathotep感謝您的意見。我將刪除'stdint.h'。 – ikel

回答

3

的原因是nearfar已經#define別處d爲1別的東西。

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

嘗試更改名字弄成plane_nearplane_far,它會工作:如果你已經包括windows.h,其中包括windef.h具有下列宏這是典型的。

+1

或(更簡單)只是'#undef'它們。另見http://stackoverflow.com/questions/118774/is-there-a-clean-way-to-prevent-windows-h-from-creating-a-near-far-macro – MSalters

+0

我不使用' windows.h'和'windef.h'我會給這個一個去。 – ikel

+0

@Zdeslav Vojkovic,謝謝。有效!我只是重命名了這兩個變量。 – ikel

相關問題