Disallow arrays as pointers
Don
nospam at nospam.com
Mon Oct 31 00:48:47 PDT 2011
On 30.10.2011 22:29, bearophile wrote:
> I have translated C code similar to:
>
>
> something foo(int n) {
> int *array = malloc(n * sizeof(int));
>
> int i;
> for (...) {
> for (i = 0; i< n; i++, array++) {
> *array = ...;
> *array = ...;
> }
> ...
> }
>
>
> Into D2 code similar to:
>
>
> something foo(int n) {
> auto array = new int[n];
> *array = ...;
> I think the D2 compiler has to catch this bug:
>
> *array = ...;
>
> D arrays aren't pointers. Letting the compiler see them as pointers is bug-prone, not tidy, and doesn't help D newbies understand how D represents its arrays.
What's New for D 0.177
Dec 9, 2006
New/Changed Features
Arrays no longer implicitly convert to pointers unless -d is used.
For example, this code:
void main()
{
int[] x = new int[59];
int *q = x;
}
compiled on 0.176 and earlier, but not any more. The case involving *arr
seems to have just been missed. This is a simple accepts-invalid bug.
Not an enhancement request.
More information about the Digitalmars-d
mailing list