我在编译一些旧的VC ++ 6.0源代码时遇到了这个错误。
error C2632: 'long' followed by 'long' is illegal
有一部分代码声明了一个导致错误的long long int变量。有谁知道我怎么能修复这个在VC ++ 6.0中编译它的错误?我已经四处搜索,我已经读过这个版本尚不支持这种数据类型。但是,这是一个旧代码,我确信这是在VC ++ 6.0中编译的。
答案 0 :(得分:5)
AFAIK Visual C ++ 6.0仅支持__int64
(Microsoft自己的64位整数类型定义)。 long long
是C99的标准类型,6.0不支持。
答案 1 :(得分:1)
我认为VC6不支持long long数据类型,但是如果你已经拥有必要的typedef,你可以用“__int64”替换“long long”,而且麻烦最少。
答案 2 :(得分:0)
错误C2632:'长'其次是' long'是非法的
Microsoft最终在Visual Studio 2013添加了对long long
和unsigned long long
的支持。
另见Which C99 features are available in the MS Visual Studio compiler?。
有人知道如何修复在VC ++ 6.0中编译它的错误吗?
早期的.Net编译器也存在这个问题。您必须使用宏和Microsoft扩展以便携方式执行此操作。
这里是Crypto++ handles it的方式(该项目仍支持旧编译器,以避免强迫用户做出不必要的选择):
#if defined(_MSC_VER) || defined(__BORLANDC__)
typedef unsigned __int64 word64;
#define W64LIT(x) x##ui64
#else
typedef unsigned long long word64;
#define W64LIT(x) x##ULL
#endif
然后你会use it like so。它适用于VC ++ 5.0 / 6.0,Visual Studio .Net,Visual Studio 2010,GCC,Clang,Intel等。
word64 x = W64LIT(0x0000000000000001);