【发布时间】:2016-03-27 08:27:48
【问题描述】:
我希望在编译时具有以下大小(使用 Visual C++ 2015 和/或 Intel C++ 16.0)
- char 32 位无符号(用于 UTF-32 字符)
- 短 32 位
- int 64 位
- 长 128 位
- 指针和 size_t 64 位(目前是)
这有可能改变吗?我当前的解决方案使用宏:
#define int int64_t
#define char char32_t // Is this unsigned?
#define short int32_t
#define long __int128
但它有问题,比如“int main”不起作用......而且我无法定义“signed int”“unsigned int”等,因为宏名称不能有空格
编辑:我想这样做的原因是为了提高易读性(所以我不必编写 int64_t...),还可以使我使用的任何代码自动使用 int/char/short/long升级(重新编译时)使用 64/32/32/128 位,无需直接修改。
【问题讨论】:
-
使
signed int行为符合您预期的唯一方法是修改编译器。哪一个,作为微软,你将无法做到。 -
你正在尝试做的事情看起来像一个非常糟糕的想法。闻起来像an X Y problem。您能否编辑您的问题,解释为什么您要这样做?
-
标准明确规定“翻译单元不得#define 或#undef 名称在词法上与关键字相同”。
int main只是一个问题 - 考虑您包含的任何标准标头会发生什么。
标签: c++ visual-c++ icc