[ECOS] why cygwin does not support "iostream.h"?

Igor Pechtchanski pechtcha@cs.nyu.edu
Sat Aug 17 09:48:00 GMT 2002


On Sat, 17 Aug 2002, Igor Pechtchanski wrote:

> > On 17 Aug 2002, Gary Thomas wrote:
> >
> > > On Sat, 2002-08-17 at 01:03, å¼  亮 wrote:
> > > >
> > > > hi all,
> > > >   my c++ code:
> > > >  #include <iostream.h>
> > > >   ...
> > > >
> > > > cout<<value;
> > > > ...
> > > >
> > > > >gcc classtest.cxx -g -o classtest.exe
> > > > ld error:
> > > >  undefined reference to "cout" and operator "<<"
> > > >
> > > > how to get iostream's support?
> > > >
> > >
> > > This would be better asked on the CygWin list :-)
> >
> > This would be better asked on the GCC list :-p
> >
> > I believe this is in the gcc FAQ.  However, it's been asked often enough
> > on this list, so here's an answer for the archives:
> >
> > gcc uses the file extension to determine the language.  Any extension it
> > doesn't recognize is assumed to be a C file.  The default extension for a
> > C++ file is ".C".  gcc does not recognize ".cxx", which is used by
> > Microsoft compilers, I think.  It is, of course, possible to tell gcc to
> > treat a ".cxx" file as a C++ file.  In case you don't want to mess with
> > the gcc configuration, use either the "-x c++" option of gcc, or simply
> > call g++.
> >         Igor
>
> Hmm, I suppose I better correct myself before someone else does...
> The default extensions (suffixes) for C++ are ".C", ".cc", ".cpp", and
> ".cxx".  Any suffix that is not recognized (e.g., ".o" and ".a") is passed
> directly to the linker.

What's wrong with me today? :-(
Please strike the ".cpp" suffix.  The above should read:
The default suffixes for C++ are ".C", ".cc", and ".cxx".
	Igor

> However, quoting from the gcc man page:
>         Source filename suffixes identify the source language, but which name
>         you use for the compiler governs default assumptions:
>
>         gcc     assumes preprocessed (.i) files are C and assumes C
>                 style linking.
>         g++     assumes preprocessed (.i) files are C++ and assumes
>                 C++ style linking.
>
> Therefore, what happens here is C++-style compilation with C-style
> linking.  Using "g++" solves the issue.  Using "gcc -x c++" does not,
> since the compilation already recognized the source file as being C++,
> it's the linking that's a problem.
>         Igor

-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

It took the computational power of three Commodore 64s to fly to the moon.
It takes a 486 to run Windows 95.  Something is wrong here. -- SC sig file


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list