为什么在C或C ++中使用“long long”会是一件坏事?

时间:2009-10-31 11:38:52

标签: c++ c gcc

为什么在C或C ++中使用“long long”会是一件坏事?

我前几天正在编译一个运行时库,并且在它检查的代码中查看long是否为64位,如果不是则使用long long。但随之而来的是,它发出了一个#warning“使用long long”。我想不出有什么理由让“long long”成为警告,除非它是开发人员的残余调试。

由于 陈兹

4 个答案:

答案 0 :(得分:10)

据我所知,long long目前仅在C99中是标准的。它也将是C ++ 0x中的一种类型,但大多数现代编译器都应该支持它。

但是,对于固定大小的整数,可以使用C99标题<stdint.h>,或者使用C ++ <boost/cstdint.hpp>

答案 1 :(得分:9)

有两个原因:

你不知道多久(哈哈!)很长,所以如果代码假设它正好是64位,那么可能会出现问题。

如果使用旧的C编译器,它可能不会支持很长时间。

答案 2 :(得分:7)

我同意Thomas Padron-McCarth的观点。最好分别检查int64_t(signed)或uint64_t(unsigned)是否存在,并在它们存在时使用它们。这是导致size_t的同样的理智。

答案 3 :(得分:5)

不便携。具体来说,Windows编译器不支持long long,你必须使用__int64和unsigned __int64(但不能在非windows平台上使用)。

这是不久前的,所以也许现在总是有更好的机会让uint64_t和int64_t可用。