C/C++ 允许选择整数宽度的编译器

C/C++ Compiler that allows int width selection

有谁知道允许您在 16 位和 32 位类型 int 之间 select 的现代本机 Windows C 或 C++ 编译器?我在 80 年代遇到过一个具有此功能的交叉编译器,但我需要一个本机编译器。作为向我的学生讲授可移植性和标准合规性的一部分,我希望能够在他们乘法、加法等时自动检查他们的代码是否溢出。两种类型的 int 数量和结果将大于 16 位 int 可能代表。谢谢

参见 C++11 及之后定义的整数类型:http://en.cppreference.com/w/cpp/types/integer : int8_t, int16_t, int32_t, int64_t

几乎所有现代 C++ 编译器都应该支持这些:GCC you can use MinGW on Windows, MSVC, Intel, Clang, even Borland/Codegear/Embarcardero 因为它们现在是标准的一部分。

固定宽度整数类型自 C99 以来一直是 C 语言的一部分,但最终在 C++11 中添加到 C++ 中,请参阅:N1988

C++ 编译器支持 shorts。如果这是为了教学,你不能告诉你的学生使用短裤而不是整数吗?

如果目的只是告诉他们有关溢出的信息,为什么不能向使用会导致溢出的整数的程序提供输入?输入像 20 亿 + 20 亿或 20 亿 x 6?

当这是一个问题时,人们还习惯于定义自己的常量,如 INT16,并将它们映射到底层数据类型;像 C++ 上的 INT16 == short。

最后,如果您对 short 有疑问,自 C++11 以来,C++ 确实提供了 16 位整数类型作为标准数据类型。

如果您绝对需要一个 16 位的 int,您可能会在 Digital Mars 等允许您针对 Win 16 API 或旧版本 Visual Studio 的编译器中找到它。