From: Mark Lorenzen <mark.lorenzen@gmail.com>
Subject: Re: Why can't objects be static in Ada?
Date: Thu, 11 Apr 2019 05:56:16 -0700 (PDT)
Date: 2019-04-11T05:56:16-07:00 [thread overview]
Message-ID: <565a03a8-9194-4814-b21c-a5b61b8185b7@googlegroups.com> (raw)
In-Reply-To: <b411a770-5e86-4d5e-9e43-e52843be724d@googlegroups.com>
On Thursday, April 11, 2019 at 2:40:40 PM UTC+2, Lucretia wrote:
> Someone sent in a pull request to my bindings and had to change a few constants to functions because objects can't be static. For an example:
>
> type Sizes is
> record
> Width : Dimension;
> Height : Dimension;
> end record with
> Convention => C;
>
> Zero_Size : constant Sizes := (others => Natural_Dimension'First);
>
> Why can't Zero_Size be compiled as static in this pre-elaborated package?
>
> This seems to be a major flaw in Ada imo.
>
> Luke.
I don't think it's not an Ada flaw. From an Ada perspective the object is constant - irrespective if it's static (it's value is set at compile-time) or not.
I guess it's compiler-dependent. There are a number of cases where GNAT could be better at generating static objects. This is especially true for objects of a (discriminated) record type.
Try adding "Restrictions (No_Elaboration_Code)" to the spec and see if it forces GNAT into doing what you want to.
Regards,
Mark L
next prev parent reply other threads:[~2019-04-11 12:56 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-11 12:40 Why can't objects be static in Ada? Lucretia
2019-04-11 12:56 ` Mark Lorenzen [this message]
2019-04-11 13:31 ` Lucretia
2019-04-11 22:49 ` Randy Brukardt
2019-04-12 1:56 ` Lucretia
2019-04-12 7:33 ` Dmitry A. Kazakov
2019-04-12 22:38 ` Randy Brukardt
2019-04-13 9:14 ` Lucretia
2019-04-12 6:59 ` Mark Lorenzen
2019-04-12 8:12 ` Simon Wright
2019-04-12 22:02 ` Randy Brukardt
2019-04-13 13:07 ` Jere
2019-04-13 13:48 ` Lucretia
2019-04-15 17:46 ` G. B.
2019-04-14 3:47 ` Keith Thompson
2019-04-16 0:08 ` sbelmont700
2019-04-16 1:40 ` Randy Brukardt
2019-04-16 12:11 ` Mark Lorenzen
2019-04-16 16:19 ` Simon Wright
2019-04-16 20:56 ` Lucretia
2019-04-16 21:07 ` Niklas Holsti
2019-04-16 21:16 ` Lucretia
2019-04-16 21:40 ` Niklas Holsti
2019-04-16 23:26 ` Randy Brukardt
2019-04-23 14:30 ` Mark Lorenzen
2019-04-16 23:09 ` Randy Brukardt
2019-04-22 20:05 ` Norman Worth
2019-04-16 20:54 ` Lucretia
2019-04-16 23:15 ` Randy Brukardt
2019-04-16 20:53 ` Lucretia
2019-04-18 13:32 ` sbelmont700
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox