gcc,不同体系结构上的long int宽度

ple*_* me 5 64-bit gcc g++ long-integer

在64位架构上,long int根据gcc至少是一个int64_t.在32位,long int至少是int32_t.使用Microsoft编译器,无论是32/64位,long总是一个int32_t.有没有办法:

  1. 迫使gcc长期处理为32位的int64_t?(为了便于测试)
  2. 强制gcc长期作为64位的int32_t处理?(为了符合MS的编译器).

Pau*_*l R 15

使用标准的类型,例如-不要这样做int32_t,uint32_t,int64_t,uint64_t从等<stdint.h>,而不是试图使有关裸类型的假设,如long int或试图编译弯曲你的意愿.

注意:任何给定平台的64位模型(例如大多数*nix平台的LP64,Mac OS X等)都是给定的,所以即使您可以说服编译器使用不同的64位模型,您也可能会破坏对系统代码,库等的任何调用