Newbie GDC issues
H. S. Teoh
hsteoh at quickfur.ath.cx
Thu Sep 5 22:14:24 PDT 2013
On Fri, Sep 06, 2013 at 02:59:30AM +0200, Ramon wrote:
> On Thursday, 5 September 2013 at 23:58:06 UTC, H. S. Teoh wrote:
>
> Thanks and
>
> >@Iain: on that note, it looks like gdb thinks it's debugging C++, but
> >D doesn't have anything called 'operator[]'. It would be Really Nice
> >if we could somehow coax gdb to use opIndex instead (though it
> >doesn't really help in the case of dyn arrays 'cos they are built-in,
> >and don't actually have any opIndex to speak of).
>
> I'm not so sure.
>
> Observation:
>
> >print someDynArray.length
> 10 // works
>
> char[5] cArray = "Hello"; // Let's try C like fixed length
> array
>
> >print cArray[3]
> 'l' // works
>
> I'm not that sure dyn arrays have no [] (or index or whatever it's
> called) operator. In the end they are just arrays with smart
> housekeeping behind the curtains and some methods (like "length").
[...]
Actually, D arrays are implemented something like this:
/* C code equivalent */
struct int_array {
int *ptr;
size_t length;
}
So if you do something like 'print someDynArray.ptr[4]' it should work.
Now obviously gdb does support more abstract array-like types, like C++
types that define operator[], so I was just saying that it would be nice
if we could figure out what to put in the debug data segment to make gdb
translate arr[i] in D into arr.ptr[i].
Static arrays in D are closer to C's stack-allocated arrays (e.g. if you
declare 'char localVar[10];' inside a function), so they more-or-less
work seamlessly with C array indexing notation.
T
--
I think Debian's doing something wrong, `apt-get install pesticide', doesn't seem to remove the bugs on my system! -- Mike Dresser
More information about the D.gnu
mailing list