bcc32c 错误整数字面值太大,无法用任何整数类型表示

bcc32c Error integer literal is too large to be represented in any integer type

我有一个很大的 __int64 文字:

const __int64 PwTab[] = {
                        50036500600837093008i64,
                        3006206760097890820056i64
                        };

它被 bcc32(Borland 经典编译器)很好地接受,但不被 bcc32c(clang)接受。

clang 编译器的错误是:

integer literal is too large to be represented in any integer type

我使用 i64 后缀告诉计算机这是一个 64 位整数文字。

如何在 clang 中编写一个 __int64 文字,它也与经典编译器中的 __int64 类型兼容?

如评论中所述,问题出在 bcc32 在编译时没有报告过大的文字,而是无声地溢出,这当然会在运行时创建与预期完全不同的数组。

例如

int64_t testVar = 0x112233445566778899aai64;

这当然大于 64 位整数可以接受的值,并导致运行时值为:

0x33445566778899aa

旁注 - ll 后缀在 Borland 经典编译器中不起作用。所以我必须在其中使用 i64 。但是换成clang.

就没有问题了