日期:2014-05-16  浏览次数:20724 次

typedef signed long long Int64; 这样的声明为什么在windows VC下不能通过?
typedef signed long long Int64;

UNIX下上面的声明可以编译,但是在VC6下编译提示出错:

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

怎么回事?
如何因此进行Unix和windows平台的统一?

------解决方案--------------------
"long long"是c99的标准,vc6是在此之前的,不支持。
vc6里面的64位整型是 __int64 
所以这行代码在vc6里要改成 typedef __int64 Int64;

我用vs2005试了一下,用"long long"可以编译通过。
所以这里不是Unix和windows平台的问题,而是vc6过时的问题。

------解决方案--------------------
我刚才找到这么一篇文章,楼主有兴趣可以看看。
不过我觉得这应该也是很久以前写的了,所以不必太深究。
现在的64位编译器里面的long就是64位了。
http://blog.csdn.net/lychee007/archive/2010/04/04/5449237.aspx