comp.lang.ada
 help / color / mirror / Atom feed
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


  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