x86-64 MSVC ++ / Intel C ++改变int,long等大小

时间:2016-03-27 08:27:48

标签: c++ visual-c++ icc

我希望在编译时使用以下大小(使用Visual C ++ 2015和/或Intel C ++ 16.0)

  • char 32位无符号(UTF-32字符)
  • 短32位
  • int 64 bits
  • 长128位
  • 指针和size_t 64位(它们当前是)

这有可能改变吗?我当前的解决方案使用宏:

-0.46%
-10.5%
+103.1%
-88.26%

但它有问题,比如" int main"没有工作......我无法定义"签署int" " unsigned int"因为宏名称不能有空格

编辑:我想这样做的原因是为了提高易读性(因此我不必编写int64_t ...)以及制作我使用的任何代码,使用int / char / short / long自动升级(重新编译时)到64/32/32/128位,无需直接修改。

2 个答案:

答案 0 :(得分:1)

你不能这样做。实现这一目标的唯一正确方法是引入自己的类型并改为使用它们。

此外,当使用类似int的类型时,除了标准所说的内容之外,你不能依赖于底层大小(例如,在int的情况下,唯一的保证是它至少为16位)。你想要实现的是你不应该拥有的依赖,这将使你的代码完全不可移植。此外,我不明白为什么int64_t比使用int更不清晰。此外,您想要的重新定义会让其他开发人员意外,因此可能会导致错误。使用您自己的类型可以明确表示类型不同。

答案 1 :(得分:0)

在定义unsigned int时没有必要使用宏,您可以编写如下代码:

typedef unsigned int UINT;

现在您也可以编写如下代码:

#define UINT balabala