Ada-关于“ mod 64”类型定义的编译器警告

Wos*_*ame 2 syntax types ada

我需要有效值介于0和63之间(含0和63)的模块化整数类型。如...

type Mix_Byte is mod 64;
Run Code Online (Sandbox Code Playgroud)

这确实可以按预期进行编译和工作,但是编译器有助于我将注意力吸引到我这一方面可能的监督上。

warning: 2 ** 64 may have been intended here
Run Code Online (Sandbox Code Playgroud)

碰巧的是我根本不打算这样做,但是很高兴知道编译器在监视:)

似乎只对值32或64发出此警告,而不对值8、16或128发出警告。我知道32和64是常见的整数大小,在这种情况下2 ** n会有意义。

如何针对此特定实例使该特定编译器警告静音(我想在整个项目中全局允许它,以防万一我在其他地方犯了真正的错误)。

我想我可以以不同的方式表达代码,以便更准确地表达我的意思?

egi*_*lhh 5

您可以尝试将其写成两个的幂:

type Mix_Byte is mod 2**6;
Run Code Online (Sandbox Code Playgroud)

编辑:

或者,(根据评论中的更多信息),您可以使用命名的数字作为模数:

Modulus : constant := 64;
type Mix_Byte is mod Modulus;
Run Code Online (Sandbox Code Playgroud)