Discussion:
Erreur : "operator for type "unsigned_char" is not declared"
(trop ancien pour répondre)
Blady
2018-05-30 17:17:10 UTC
Permalink
Bonjour,

Avec le paquetage "types":

with Interfaces.C; use Interfaces.C;
package types is
subtype uint8_t is unsigned_char;
function "=" (R, L : uint8_t) return Boolean renames Interfaces.C."=";
function ">" (R, L : uint8_t) return Boolean renames Interfaces.C.">";
function "<=" (R, L : uint8_t) return Boolean renames Interfaces.C."<=";
function "+" (R, L : uint8_t) return uint8_t renames Interfaces.C."+";
function "-" (R, L : uint8_t) return uint8_t renames Interfaces.C."-";
function "and" (R, L : uint8_t) return Boolean renames
Interfaces.C."and";
end;

j'ai l'erreur suivante pour l'opérateur "and" (GNAT GPL 2017) :

types.ads:37:69: operator for type "unsigned_char" is not declared in
"Interfaces.C"

Les premiers opérateurs sont trouvés par le compilateur mais pas "and" ?

Est-ce un pb compilateur?

Merci, Pascal.
Niklas Holsti
2018-05-30 18:18:52 UTC
Permalink
Post by Blady
Bonjour,
with Interfaces.C; use Interfaces.C;
package types is
subtype uint8_t is unsigned_char;
function "=" (R, L : uint8_t) return Boolean renames Interfaces.C."=";
function ">" (R, L : uint8_t) return Boolean renames Interfaces.C.">";
function "<=" (R, L : uint8_t) return Boolean renames Interfaces.C."<=";
function "+" (R, L : uint8_t) return uint8_t renames Interfaces.C."+";
function "-" (R, L : uint8_t) return uint8_t renames Interfaces.C."-";
function "and" (R, L : uint8_t) return Boolean renames
Interfaces.C."and";
end;
types.ads:37:69: operator for type "unsigned_char" is not declared in
"Interfaces.C"
Les premiers opérateurs sont trouvés par le compilateur mais pas "and" ?
Est-ce un pb compilateur?
Non.

L'opèrateur "and" dans Interfaces.C:

function "and" (R, L : uint8_t) return uint8_t
-- ^^^^^^^
renames Interfaces.C."and";
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
Blady
2018-05-30 19:39:34 UTC
Permalink
Post by Niklas Holsti
Post by Blady
Bonjour,
with Interfaces.C; use Interfaces.C;
package types is
subtype uint8_t is unsigned_char;
function "=" (R, L : uint8_t) return Boolean renames Interfaces.C."=";
function ">" (R, L : uint8_t) return Boolean renames Interfaces.C.">";
function "<=" (R, L : uint8_t) return Boolean renames
Interfaces.C."<=";
function "+" (R, L : uint8_t) return uint8_t renames Interfaces.C."+";
function "-" (R, L : uint8_t) return uint8_t renames Interfaces.C."-";
function "and" (R, L : uint8_t) return Boolean renames
Interfaces.C."and";
end;
types.ads:37:69: operator for type "unsigned_char" is not declared in
"Interfaces.C"
Les premiers opérateurs sont trouvés par le compilateur mais pas "and" ?
Est-ce un pb compilateur?
Non.
function "and" (R, L : uint8_t) return uint8_t
-- ^^^^^^^
renames Interfaces.C."and";
Merci Niklas pour la réponse rapide :-)

En cherchant toujours un problème de compilateur on ne trouve finalement
souvent qu'un problème entre la chaise et le clavier ;-)

Pascal.

Continuer la lecture sur narkive:
Loading...