c++/386: Re: Internal Compiler error
Martin v. Loewis
martin@loewis.home.cs.tu-berlin.de
Thu Jul 6 00:46:00 GMT 2000
>Number: 386
>Category: c++
>Synopsis: Internal Compiler error
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: analyzed
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Jul 06 00:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: "Paul C. Lounsbury" <pclouns@cs.ucsb.edu>
>Release: 2.95.2
>Organization:
>Environment:
>Description:
Original-Message-Id: <200006121729.KAA28586@hercules.cs.ucsb.edu>
Date: Mon, 12 Jun 2000 10:29:19 -0700 (PDT)
Reply-To: "Paul C. Lounsbury" <pclouns@cs.ucsb.edu>
The attached code gives an internal compiler error.
command line: g++ -Wall -v boggle.C
using SunOS release 5.7 generic
Desktop: CDE 1.3.5, OpenWindows Ver. 3.6.1
Network Domain: cs.ucsb.edu
//This code returns an internal compiler error when I use:
//g++ -Wall -v boggle.C
//on the UC Santa Barbara csil.cs.ucsb.edu Unix server
/* "boggle.C" : C++ code to draw a randomized Boggle(TM Parker Brothers) game
* with each <ENTER> press generating another board
* and ending with <ctrl>-d
*/
#include <iostream>
#include <cstdlib>
#include <string>
class board {
const string dies[16];
char brd[16];
int dat[16];
public:
board(const string [], int []);
~board() { delete brd;
delete dat;
delete dies; }
void generate();
friend ostream & operator<< (ostream &, const board &);
int getR(int[]);
char get_let(const string [], int &);
const char * get_brd() const { return brd; }
const string * get_dies() const { return dies; }
};
board::
board(const string d[], int data[])
: dies(d), dat(data)
{
char board[16] = get_brd();
board = new char[16];
for (int i(0); i < 16; ++i){
cout << dies[i] << ' ';
cout << dat[i] << endl;
}
}
void
board::
generate()
{
int rand_d(-1);
for(int p(0); p<16; p++){
while((rand_d = getR(data)) != -1) {
cout << rand_d;
*(brd+p) = get_let(dies, rand_d);
}
}
}
ostream &
operator<<(ostream & os, board & bd)
{
return
os << bd.get_brd() << " \n";
/*for(int i(0); i < 16; i++) {
if( i == 15 )
return os << *(bd.get_brd() +i) << "\n\n\n";
else {
if( (i+1) % 4 == 0 )
return os << *(bd.get_brd() +i) << "\n\n";
else
return os << *(bd.get_brd() +i) << ' ';
}
}
*/
}
int
board::
getR(int d_a[])
{
int r(-1);
while( r < 0 || *(d_a+r) != -1 ) {
r = (int)(random() % 16);
if( *(d_a+r) == r ){
*(d_a+r) = -1;
return r;
}
}
return(-1);
}
char
board::
get_let( const string brd_arr[], int &die_num )
{
int ran = (int)(random() % 6);
return *(brd_arr[ran] + die_num);
}
int
main(int argc, char *argv[])
{
const string d[16] =
{ "LRYTTE","VTHRWE","EGHWNE","SEOTIS","ANAEEG","IDSYTT",
"OATTOW","MTOICU","AFPKFS","XLDERI","HCPOAS","ENSIEU",
"YLDEVR","ZNRNHL","NMIQHU","OBBAOJ"};
int dat[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
board *b_p = new board(d, dat);
b_p->generate();
delete b_p;
return 0;
}
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-prs
mailing list