2010-06-29 24 views
0

所以我试图建立在64 我链接到所有64个库的32位应用程序,我已经重新编译,我们使用64位的一切。大厦在64位Windows上VS2008给人C2632错误

我现在越来越奇怪的错误。 我在网上看到了一些类似的错误,但在这些话题中没有任何用处。

任何想法可能会导致此行为错误?

警告C4091: '类型定义':忽视了离开的时候没有变量声明 C '浮动' 的:\ Program Files文件\微软的SDK \的Windows \ v6.0A \包含\ WINDEF.H 错误C2632:“浮动“其次是 '双师型' 是非法的
C:\ Program Files文件\ MicrosoftSDKs \的Windows \ v6.0A \包含\ WINDEF.H

警告C4091: '类型定义':忽视了左边的 '双重' 时,没有变声明是C:\ Program Files文件\微软的SDK \的Windows \ v6.0A \包含\ wtypes.h 错误44错误C2632: '双',然后 '双' 是非法的
C:\ Program Files文件\微软的SDK \的Windows \ v6.0A \ include \ wtypes.h

警告和错误是针对同一行。 显然它不是用wtypes.h和WINDEF.H一个问题(如果这是我不能做任何事情)

typedef float    FLOAT; 

typedef double DOUBLE; 

显然,这些都很好地独立所以它必须是别的东西。 导致此项目的文件只包含

任何想法?

+0

FLOAT和DOUBLE是否曾被定义为宏? (本地来源,甚至?) – 2010-06-29 16:34:22

回答

2

看起来像FLOATDOUBLE已经在#define d到double。这可能是另一个库的结果,尽管切换到64位编译似乎不太可能。尝试做

#undef FLOAT 
#undef DOUBLE 

在此之前,包括windows.hwindef.h或任何文件是警告直接负责。

+0

这似乎解决了这个问题,但我将如何找出什么跨越了定义? – grobartn 2010-06-29 16:56:12

+2

如果你在你的源代码文件中加入了#define DOUBLE TESTER'作为第一行,那么编译器应该在那里重新定义为'double'的地方(最有可能包括行)向你大喊。 – 2010-06-29 17:09:45

+0

您也可以使用试错法(注释掉#includes)或查看预处理器输出(cl/E)。马克B的建议可能是你最好的选择。 – Nick 2010-06-29 17:10:08