X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "K.J.Williams" Newsgroups: comp.os.msdos.djgpp Subject: Upgrading from a bad C compiler Date: Thu, 19 Jul 2012 19:16:06 -0700 (PDT) Organization: http://groups.google.com Lines: 101 Message-ID: <17d4b525-2c31-4c20-b3c5-a7118343e9a5@googlegroups.com> NNTP-Posting-Host: 67.5.176.227 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1342750566 1635 127.0.0.1 (20 Jul 2012 02:16:06 GMT) X-Complaints-To: groups-abuse AT google DOT com NNTP-Posting-Date: Fri, 20 Jul 2012 02:16:06 +0000 (UTC) Complaints-To: groups-abuse AT google DOT com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=67.5.176.227; posting-account=jrLHRgkAAABPV01ZW_RN_U6Tm5UnYNUx User-Agent: G2/1.0 X-Received-Bytes: 3712 Bytes: 3812 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id q6K2U2o5013726 Reply-To: djgpp AT delorie DOT com I recently upgraded, and imported some source code from a non-standard ANSI C compliant compiler (Borland Turbo C++ 3.0 for DOS) to DJGPP because of the memory limitation and the fact that TC++ far invention for accessing memory does not work. Now I am using DJGPP via RHIDE get over this disadvantage of memory, and I am running into a lot of compiler (syntax) errors because the old compiler I used was not compliant. The only difference between RHIDE and Turbo C++ that I have noticed, is that there is no verbose explanation of the errors - which I could access in TC++. Is there a documentation where I can find out more in depth what these errors mean? 3 examples of errors - simplified (2 of which I solved)- things that I could do in C in TC++ that DJGPP compiler nails me on : #1 //in myfile1.c short int myfunc(char x) { char w[0] = x;// legal in TC++ - but illegal in DJGPP, to assign the address // of x to w[0] in this manner .... .... return 0; } the fix: char w[0] = &x; #2 #define WIDGETS 200 //in myfile2.c - a global struct struct mystuff { .... .... }; struct mystuff *mything = NULL; //for use with malloc() & free() short int badstuff = 0; short int myfunc(void) { short unsigned int x; .... x = sizeof(mystuff)*WIDGETS; //legal in TC++ but illegal in DJGPP .... return 0; } the fix: x = sizeof(mything)*WIDGETS; // I don't understand why "mystuff" //doesn't work instead of using mything... #3 //in myfile3.c , declares two extern of two variables in myfile2.c outside before any function //bodies // first extern: extern short int badstuff = 0;//legal in TC++ but illegal in DJGPP // the fix is : extern short int badstuff;// but I dont understand why // second extern: extern struct mystuff *mything;//legal in TC++ but illegal in DJGPP extern mystuff *mything;//doesnt work becuase the compiler doesn't know what mystuff is extern struct mystuff;//doesnt work becuase mystuff is a struct template, not a instantiation extern mything;//doesnt work becuase it doesnt know what type mything is, and even so... //... mything is a variable not a pointer to a struct of mystuff which is what I am trying to //get recognized in myfile3.c //THIS IS WHERE I AM STUCK //please note on some download sites, TC++ is available - even though its obsolete and //non-standard ANSI compliant, it should never be used. I have it as the product that //came in a box with the books and etc. mediums to install it. Thanks In Advance, KJ