From: elettronicmail <ele...@em...> - 2004-04-29 12:09:16
|
hey I'have installing mingw on WinME , but when work with gcj from l= ine command ! :-) Warning error: C:\MinGW\bin>gcj --main=3DMyApp.ja= va -o MyApp MyApp.o C:\MINGW\BIN\..\lib\gcc-lib\mingw32\3.3.1\..\..\..\.= .\mingw32\bin\ld.exe: cannot open crtbegin.o: No such file or director= y Why? Thanks Rob -- Email.it, the professional e-mail, gratis per te: http://www.email.it/f Sponsor: Hai un sito web? Allora guadagna anche tu con il Web Marketing ! Collegati subito. Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=3D1554&d=3D29-4 |
From: Earnie B. <ea...@us...> - 2004-04-29 13:02:31
|
Does http://www.mingw.org/MinGWiki/ help? Earnie elettronicmail wrote: >hey=20 > >I'have installing mingw on WinME , but when work with gcj >from line command ! :-) > >Warning error: > >C:\MinGW\bin>gcj --main=3DMyApp.java -o MyApp MyApp.o >C:\MINGW\BIN\..\lib\gcc-lib\mingw32\3.3.1\..\..\..\..\mingw32\bin\ld.exe= : >cannot > open crtbegin.o: No such file or directory > >Why? > > >Thanks > >Rob > > > >-- >Email.it, the professional e-mail, gratis per te: http://www.email.it/f > >Sponsor: >Hai un sito web? Allora guadagna anche tu con il Web Marketing ! >Collegati subito. >Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=3D1554&d=3D29-4 > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g.= =20 >Take an Oracle 10g class now, and we'll give you the exam FREE.=20 >http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dclick >_______________________________________________ >MinGW-users mailing list >Min...@li... > >You may change your MinGW Account Options or unsubscribe at: >https://lists.sourceforge.net/lists/listinfo/mingw-users > > =20 > --=20 http://www.mingw.org http://sourceforge.net/projects/mingw https://sourceforge.net/donate/index.php?user_id=3D15438 |
From: John G. <jo...@jo...> - 2004-04-29 13:10:24
|
Does anyone know what the C++ standard says about variable initialization? Are non-static primitive variables initialized automatically? My testing with g++ on Linux and MinGW both indicate that variables are initialized both on the stack and the heap, but I remember hearing that the standard did not guarantee this. Neither the GCC documentation nor Google could clarify this. -- John Gaughan jo...@jo... http://www.johngaughan.net/ |
From: Benjamin R. <Ben...@ep...> - 2004-04-29 15:12:43
|
Hi John, "John Gaughan" <jo...@jo...> writes: > Does anyone know what the C++ standard says about variable > initialization? Are non-static primitive variables initialized > automatically? No. Only class variables and static variables are garanteed to be initialized automatically. No change from C here. benny |
From: Luke D. <cod...@ho...> - 2004-04-29 13:24:03
|
I don't know what you mean. Example code? How do you test whether variables are initialised though? If they happen to be zero when you run the program then it may be accidental and it doesn't prove anything. If I understand you correctly though, I am certain that variables on the stack and heap are not initialised. Luke ----- Original Message ----- From: "John Gaughan" <jo...@jo...> To: <min...@li...> Sent: Thursday, April 29, 2004 9:10 PM Subject: [Mingw-users] Variable Initialization > Does anyone know what the C++ standard says about variable initialization? > Are non-static primitive variables initialized automatically? > > My testing with g++ on Linux and MinGW both indicate that variables are > initialized both on the stack and the heap, but I remember hearing that > the standard did not guarantee this. Neither the GCC documentation nor > Google could clarify this. > > -- > John Gaughan > jo...@jo... > http://www.johngaughan.net/ |
From: John G. <jo...@jo...> - 2004-04-29 14:36:58
|
Luke Dunstan said: > I don't know what you mean. Example code? #include <iostream> int main (void) { int x; int *y = new int; std::cout << x << y; delete y; return 0; } What should it print? Zeros? Anything it wants? -- John Gaughan jo...@jo... http://www.johngaughan.net/ |
From: John G. <jo...@jo...> - 2004-04-29 15:06:16
|
John Gaughan said: > std::cout << x << y; s/y/*y/ -- John Gaughan jo...@jo... http://www.johngaughan.net/ |
From: Michael G. <mg...@te...> - 2004-04-29 15:12:10
|
> #include <iostream> > int main (void) > { > int x; > int *y = new int; > std::cout << x << y; > delete y; > return 0; > } > > What should it print? Zeros? Anything it wants? For x definitely anything it wants. For y I could imagine the memory to be initialized with 0. Even if the memory currently is initialized with 0 then I would not rely on it unless I know for sure that's what the standard defines (which I don't know). Best, Michael -- Vote against SPAM - see http://www.politik-digital.de/spam/ Michael Gerdau email: mg...@te... GPG-keys available on request or at public keyserver |
From: Bronek K. <br...@ru...> - 2004-04-29 16:32:15
|
Michael Gerdau <mg...@te...> wrote: > Even if the memory currently is initialized with 0 then I would not > rely on it unless I know for sure that's what the standard defines > (which I don't know). the value pointed by y is indeterminate (clause 5.3.4/15 of C++ standard) B. |
From: J. G. <jg-...@jg...> - 2004-04-29 18:29:02
|
Hi, on the 29/04/04 16:12, Michael Gerdau wrote: >> #include <iostream> >> int main (void) >> { >> int x; >> int *y = new int; >> std::cout << x << y; >> delete y; >> return 0; >> } >> >> What should it print? Zeros? Anything it wants? > > For x definitely anything it wants. Unless x ends up in the .bss section (which depends on compilation and linking specifics), you could check this using objectdump and looking at the symbol. BSS section is zeroed upon load by expansion, as these are all considered 0. > For y I could imagine the memory to be initialized with 0. The new operator is just simple memory allocation wrapper (likely even just malloc in many cases), and malloc does not set to zero. You could create a "new" which did zero, it would be like this: void * operator new_cleared(std::size_t size) throw (std::bad_alloc) { void * result = calloc(size, 1); // if calloc was unable to allocate and clear (NULL returned), // then throw exception // (could check errno to be sure!) if (result != NULL) { throw std::bad_alloc(); } return result; }; // this is untested You could even create a "renew" operator too, as C++ lacks this because they prefer the use of containers instead of functions and classes managing their own memory. A renew operator could work with a realloc() style allocator. Kind regards JG |
From: Michael G. <mg...@te...> - 2004-04-29 20:05:50
|
> > For x definitely anything it wants. > > Unless x ends up in the .bss section (which depends on compilation and > linking specifics), you could check this using objectdump and looking at > the symbol. BSS section is zeroed upon load by expansion, as these are > all considered 0. As others already pointed out that's implementation specific. > > For y I could imagine the memory to be initialized with 0. > > The new operator is just simple memory allocation wrapper (likely even [snip] Thanks for answering but I didn't ask the original question and in fact didn't think allocated memory would be zero-initialized. I just wrote I don't _know_ wether it is and wouldn't rely on it unless I knew for sure. Best, Michael -- Vote against SPAM - see http://www.politik-digital.de/spam/ Michael Gerdau email: mg...@te... GPG-keys available on request or at public keyserver |
From: John G. <jo...@jo...> - 2004-04-29 21:16:52
|
Thank you all for your answers. Some day I will scrounge up the money and buy a copy of the standard so I will have some light reading ;-) Anyway, I was always told not to depend on variables being initialized to anything and it sounds like I was told right. My cursory poking around with g++ shows that they are initialized to zero, but I figured I could not count on this all the time. I always initialize variables just to be safe. I program in several languages and with several interpreters and compilers, so I try to play it safe because each language has its own quirks and I should not depend on the computer to do what I *think* it does unless I explicitly tell it to. This question came up on a computer science message board I participate on and I figured you guys could set us straight :-) Thank you. -- John Gaughan http://www.johngaughan.net/ jo...@jo... |
From: Benjamin R. <Ben...@ep...> - 2004-04-30 13:02:12
|
Hi John, John Gaughan <jo...@jo...> writes: > Thank you all for your answers. Some day I will scrounge up the > money and buy a copy of the standard so I will have some light > reading ;-) You can get it at <http://webstore.ansi.org> as PDF for $18. Same for the C standard, BTW. benny |
From: Greg C. <chi...@mi...> - 2004-04-29 16:07:01
|
John Gaughan wrote: > > #include <iostream> > int main (void) > { > int x; > int *y = new int; > std::cout << x << y; > delete y; > return 0; > } > > What should it print? Zeros? Anything it wants? The output is indeterminate for 'x', because of 8.5/9 for 'y', because of 5.3.4/15 BTW, in C++ you don't need to say > int main (void) because 'int main()' means the same thing, and you don't need to say > return 0; in main() because the compiler takes care of that implicitly. Those trivialities aside, it's usually a mistake to use 'new' in an application program: prefer std::auto_ptr in this case because it'll prevent a memory leak if the stream operators throw an exception. |
From: John G. <jo...@jo...> - 2004-04-30 13:35:22
|
Benjamin Riefenstahl said: > You can get it at <http://webstore.ansi.org> as PDF for $18. Same for > the C standard, BTW. Thank you for the tip. I checked at ISO a year or two ago and it was a bit more expensive than $18, but at the time I do not think they had a PDF version, either. That I can (and will) purchase. I hear that even with joint ANSI/ISO standards, the ISO tends to charge more for the same product. -- John Gaughan jo...@jo... http://www.johngaughan.net/ |
From: Benjamin R. <Ben...@ep...> - 2004-04-30 15:02:16
|
Hi John, "John Gaughan" <jo...@jo...> writes: > Thank you for the tip. I checked at ISO a year or two ago and it was > a bit more expensive than $18, but at the time I do not think they > had a PDF version, either. That I can (and will) purchase. Each member of the ISO makes it's own prices (and for some bodies that's their major income source). The standards that you get from the ISO website are actually from the Swiss member body, I think. ANSI has made a point of providing PDFs at bargain prices for some selected documents for us poor programmers ;-) benny |
From: Bronek K. <br...@ru...> - 2004-04-30 14:07:26
|
Benjamin Riefenstahl <Ben...@ep...> wrote: > You can get it at <http://webstore.ansi.org> as PDF for $18. Same for > the C standard, BTW. I doubt you can buy there C89 standard (ISO/IEC 9899:1990), which is where C++ standard is refering to. B. |
From: Benjamin R. <Ben...@ep...> - 2004-04-30 15:07:29
|
Hi Bronek, "Bronek Kozicki" <br...@ru...> writes: > I doubt you can buy there C89 standard (ISO/IEC 9899:1990), which is > where C++ standard is refering to. That's right, yes. You can get that one there, too, but only in the DIN version (in English) for $182 (if I understad the catalogue right). Most of the changes of C99 (at least those that are interesting for me) are additional library functions though, and the C++ standard has overviews what exactly it imports from the C standard. So depending on your needs, C99 can be used as a good enough approximation. benny |