c++/3304: g++ accepts array definition with non-constant dimensions
jeggers@ngcsu.edu
jeggers@ngcsu.edu
Wed Jun 20 13:16:00 GMT 2001
>Number: 3304
>Category: c++
>Synopsis: g++ accepts array definition with non-constant dimensions
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: unassigned
>State: open
>Class: accepts-illegal
>Submitter-Id: net
>Arrival-Date: Wed Jun 20 13:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: John Eggers
>Release: GCC 2.96 20000731
>Organization:
>Environment:
Linux 7.0
>Description:
g++ accepts the following as correct, even with the -ansi
switch.
//***** Begin Code Fragment *****
cout << "Enter the sum (a positive integer): ";
cin >> sum;
cout << "Enter the size (a positive integer): ";
cin >> size;
cout << endl;
const int SIZE = size;
const int SUM = sum;
int Sum[SIZE+1][SUM+1];
//***** End Code Fragment *****
Note: g++ also accepts
int (*Sum)[SUM+1] = new int[SIZE+1][SUM+1];
>How-To-Repeat:
Compile attached file with g++. Also, comment-out the line
int Sum[SIZE+1][SUM+1];
and un-comment the line
int (*Sum)[SUM+1] = new int[SIZE+1][SUM+1];
and then compile.
>Fix:
I do not have the expertise to suggest a fix, except to note
that the above code should be rejected by any ANSI-compliant
C++ compiler (although, I found it very convenient that g++
let me get away with the above code).
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="test1.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test1.cpp"
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlOjpz
dGQ7CgppbnQgbWFpbigpIHsKCiAgIHZlY3RvcjxpbnQ+IHNldCgwKTsKICAgCiAgIGludCBzdW0g
PSAwOwogICBpbnQgc2l6ZSA9IDA7CiAgIGludCBpID0gMDsKICAgaW50IGogPSAwOwogICAKICAg
Y291dCA8PCAiRW50ZXIgdGhlIHN1bSAoYSBwb3NpdGl2ZSBpbnRlZ2VyKTogIjsKICAgY2luID4+
IHN1bTsKICAgCiAgIGNvdXQgPDwgIkVudGVyIHRoZSBzaXplIChhIHBvc2l0aXZlIGludGVnZXIp
OiAiOwogICBjaW4gPj4gc2l6ZTsKICAgCiAgIGNvdXQgPDwgZW5kbDsKICAgCiAgIGNvbnN0IGlu
dCBTSVpFID0gc2l6ZTsKICAgY29uc3QgaW50IFNVTSA9IHN1bTsKICAgCiAgIGludCBTdW1bU0la
RSsxXVtTVU0rMV07IC8vIElsbGVnYWw6ICBTSVpFIGFuZCBTVU0gbm90IGluaXRpYWxpemVkIHdp
dGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgZXhwcmVzc2lvbnM7IGJ1
dCB3b3JrcyB3aXRoIGcrKyAyLjk2CiAgIAoKICAgLy8gaW50ICgqU3VtKVtTVU0rMV0gPSBuZXcg
aW50W1NJWkUrMV1bU1VNKzFdOyAvLyBTdGlsbCBpbGxlZ2FsOiAgQWxsIGRpbWVuc2lvbnMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNlcHQg
Zmlyc3QgbXVzdCBiZSBrbm93biBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNvbXBpbGUtdGltZTsgYWxzbyB3b3JrcyB3aXRoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZysrIDIuOTYuCgog
ICBjb3V0IDw8ICJTdWNjZXNzZnVsbHkgaW5zdGFudGlhdGVkIGFycmF5LiIgPDwgZW5kbDsKICAg
CiAgIGZvciAoaSA9IDA7IGkgPD0gU0laRTsgKytpKSB7CiAgICAgIFN1bVtpXVswXSA9IDE7CiAg
IH0KICAgCiAgIGZvciAoaiA9IDE7IGogPD0gU1VNOyArK2opIHsKICAgICAgU3VtWzBdW2pdID0g
MDsKICAgfQogICAKICAgZm9yIChpID0gMTsgaSA8PSBTSVpFOyArK2kpIHsKICAgICAgZm9yIChq
ID0gMTsgaiA8PSBTVU07ICsraikgewogICAgICAgICBTdW1baV1bal0gPSBTdW1baS0xXVtqXTsK
ICAgICAgfQogICB9CiAgIAogICBjb3V0IDw8ICJTdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgYXJy
YXkuIiA8PCBlbmRsOwogICAKICAgcmV0dXJuIDA7Cn0K
More information about the Gcc-bugs
mailing list