vc ++ 6.0中的long long int编译错误

时间:2009-12-14 03:43:29

标签: visual-c++ compiler-errors

我在编译一些旧的VC ++ 6.0源代码时遇到了这个错误。

error C2632: 'long' followed by 'long' is illegal

有一部分代码声明了一个导致错误的long long int变量。有谁知道我怎么能修复这个在VC ++ 6.0中编译它的错误?我已经四处搜索,我已经读过这个版本尚不支持这种数据类型。但是,这是一个旧代码,我确信这是在VC ++ 6.0中编译的。

3 个答案:

答案 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 longunsigned 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);