From mboxrd@z Thu Jan 1 00:00:00 1970 From: jeggers@ngcsu.edu To: gcc-gnats@gcc.gnu.org Cc: gsheppar@gpc.peachnet.edu Subject: c++/3304: g++ accepts array definition with non-constant dimensions Date: Wed, 20 Jun 2001 13:16:00 -0000 Message-id: <20010620201041.3371.qmail@sourceware.cygnus.com> X-SW-Source: 2001-06/msg00851.html List-Id: >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