views:

502

answers:

3

I'm trying to run my very first c++ program in linux (linux mint 8). I use either gcc or g++, both with the same problem: the compiler does not find the library I am trying to import.

I suspect something like I should either copy the iostream.h file (which I don't know where to look for) in the working folder, move my file to compile somewhere else or use an option of some sort.

Thanks for your suggestions.

Here's the gcc command, the c++ code, and the error message:

gcc -o addition listing2.5.c

.

#include <iostream.h>

int Addition(int a, int b)
{
    return (a + b);
}

int main()
{
    cout << "Resultat : " << Addition(2, 4) << "\n";
    return 0;
}

.

listing2.5.c:1:22: error: iostream.h: No such file or directory
listing2.5.c: In function ‘main’:
listing2.5.c:10: error: ‘cout’ undeclared (first use in this function)
listing2.5.c:10: error: (Each undeclared identifier is reported only once
listing2.5.c:10: error: for each function it appears in.)

Now the code compiles, but I cannot run it from the command line using the file name. addition: command not found Any suggestion?

+5  A: 
  • cout is defined in the std:: namespace, you need to use std::cout instead of just cout.
  • You should also use #include <iostream> not the old iostream.h
  • use g++ to compile C++ programs, it'll link in the standard c++ library. gcc will not. gcc will also compile your code as C code if you give it a .c suffix. Give your files a .cpp suffix.
nos
Thx for your reply. I guess I'll trow away the 2000 book I'm learning with. :)
Morlock
Hum, the "addition" file created does not work. I try to use it from the command line, writing: addition, but it says "command not found". I also tried to click on it and no terminal pops up. How could I make it work?
Morlock
The current directory isn't in your path. Try `./addition`
caf
Thx caf, solved my problem :)
Morlock
+1  A: 

You need <iostream>, <iostream.h> is non-standard too-old header. Try this:

#include <iostream>

int Addition(int a, int b)
{
    return (a + b);
}

int main()
{
    using namespace std;
    cout << "Resultat : " << Addition(2, 4) << "\n";
    return 0;
}
AraK
+2  A: 

You need <iostream> not <iostream.h>.

They are also header files not libraries.

Other things to fix, cout should be std::cout and you should use std::endl instead of "\n".

Mike Anchor
No, using `"\n"` is better. I think you are aware that `std::endl` flushes the stream also.
AraK
Thx for clearing the confusion with std::endl AraK
Morlock