Thus spake Shawn Lamson: > I refer to page: > http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/headers_cc.txt > which lists iostream as a standard library header. So why throw the > message from "backward/backward_warning.h" at me? > In addition, if I alter the #include to be > #include </usr/include/g++-3/iostream> > then I still get the "backward" warning, but note that I don't have to > put ".h" after the "iostream". That's very bad practice. You should never put an absolute path to a header file in an include statement...Especially for a standard header. > The goal here is to have a program reading: > #include <iostream> > int main(){ > cout<<"Hello, world!"<<endl; > return 0; > } If that's your goal, then what's the problem? kraken@tao:~$ cat test.cpp //test.cpp #include <iostream> using namespace std; int main() { cout<<"Hello, world!"<<endl; return 0; } kraken@tao:~$ g++-3.3 -o test.out test.cpp kraken@tao:~$ ./test.out Hello, world! Note the using namespace std; line. Once you simply #include <iostream>, the only thing keeping it from compiling is the fact that cout and endl are now in the std:: namespace. Thus, you can do one of the three following things: // assumes std:: in front of things using namespace std; // import into your namespace only the things you want using std::cout; using std::endl; // always qualify the things you're using which exist // in the std namespace std::cout << "foobar" << std::endl; > P.S. - which libraries are best to use; /usr/include/g++-3/ or > /usr/include/c++/3.3/ ? Neither should be used directly. The compiler will automatically search those paths, unless you use -nostdinc or -nostdinc++ -- Nathan Poznick <poznick@conwaycorp.net> A duty dodged is like a debt unpaid; it is only deferred, and we must come back and settle the account at last. - Joseph F. Newton
Attachment:
pgput2oB9VXwp.pgp
Description: PGP signature