comp.lang.ada
 help / color / mirror / Atom feed
From: "Ed Colbert" <colbert@abssw.com>
Subject: Re: GNAT Limitations?
Date: 1998/02/18
Date: 1998-02-18T00:00:00+00:00	[thread overview]
Message-ID: <6cf3hc$4np$1@cronkite.sp.trw.com> (raw)
In-Reply-To: 6aesm3$sr6$1@Masala.CC.UH.EDU



wanker@exploited.barmy.army wrote in message
<6aesm3$sr6$1@Masala.CC.UH.EDU>...
>On GNAT 3.09 (Win95) I find two problems that I can't find mentioned
>anywhere in the documentation:
> 1) GNAT refuses to let me initialize a record with named
> fields if I don't initialize every field.  For
> example:
>
> type X is
>     record
> A : Integer := 1;
> B : Integer := 2;
> C : Integer := 3;
>     end record;
>
> A_Rec : X := (A => 5, C => 6);
>
> Gives me an error with something like "No value
> provided for B".  However, according to the
> "C/C++ to Ada" Guide I am supposed to be able
> to do this.  What gives?


The problem is your aggregate does not specify a value for B.  An aggregate
must have an explicit value for each record component.  Defaults apply to
object declarations, i.e. when you declare an uninitialized object.  So if
you had declared:

    A_Rec: X;

You would get default values for A, B, & C.

> 2) When I try to instantiate Ada.Unchecked_Deallocation,
> GNAT claims that Unchecked_Deallocation is not
> in Ada, which contradicts what's in the Language
> Referenec Manual and the "C/C++ to Ada Guide".
> Again, what gives?


Did you with it before you instatiated it?  For example:

    with Ada.Unchecked_Deallocation;
    procedure Free is new Ada.Unchecked_Deallocation (...);

> 3) GNAT refuses to compile code where I try to find the
> range of a particular dimension of a multi-dimensional
> array.  I'm using the example in the C/C++ to
> Ada Guide:
>
> -- Assuming Matrix is a 2d array type
>
> for I in Matrix(1)'Range loop
>     for J in Matrix(2)'Range loop
> Some_Op (Matrix (I, J));
>     end loop;
> end loop;
>
> The compiler complains about using an attribute
> and indexing Matrix at the same time.


You have the syntax wrong.  Change your loop to the following:

 for I in Matrix'Range(1) loop
     for J in Matrix'Range(2) loop
         Some_Op (Matrix (I, J));
     end loop;
 end loop;

Take Care,
Ed Colbert







  parent reply	other threads:[~1998-02-18  0:00 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-01-25  0:00 GNAT Limitations? wanker
1998-01-25  0:00 ` Keith Thompson
1998-01-25  0:00   ` wanker
1998-01-26  0:00     ` Nick Roberts
1998-01-25  0:00 ` bklungle
1998-01-25  0:00   ` wanker
1998-01-26  0:00     ` Stephen Leake
1998-01-26  0:00       ` Nick Roberts
     [not found]     ` <EnECID.GyI@world.std.com>
     [not found]       ` <EnIJ7B.8CB@world.std.com>
1998-01-29  0:00         ` bklungle
1998-01-29  0:00         ` Nick Roberts
1998-02-18  0:00 ` Ed Colbert [this message]
     [not found] <6aesm3$sr6$1@masala.cc.uh.edu>
1998-01-25  0:00 ` wanker
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox