Reputation: 2713
I'm practicing using mulitple files and header files etc. So I have this project which takes two numbers and then adds them. Pretty simple.
Here are my files:
main.cpp
#include <iostream>
#include "add.h"
int main()
{
int x = readNumber();
int y = readNumber();
writeAnswer(x + y);
return(0);
}
io.cpp
int readNumber()
{
int x;
std::cout << "Number: ";
std::cin >> x;
return x;
}
void writeAnswer(int x)
{
std::cout << "Answer: ";
std::cout << x;
}
add.h
#ifndef ADD_H_INCLUDED
#define ADD_H_INCLUDED
int readNumber();
void writeAnswer(int x);
#endif // #ifndef ADD_H_INCLUDED
The error is showing up in io.cpp. The exact errors are:
Does anyone have any idea why this may be happening? Thanks.
EDIT: I made a small project yesterday with the same amount of files (2 .cpp and 1.h) and I didn't include the iostream header in the other .cpp and it still compiled and ran fine.
Upvotes: 269
Views: 455816
Reputation: 447
If you're using pre-compiled headers with Microsoft's compiler (MSVC), remember that it must be:
#include "stdafx.h"
#include <iostream>
and not the other way around:
#include <iostream>
#include "stdafx.h"
In other words, the pre-compiled header include file must always come first. (The compiler should give you an error specifically explaining this if you forget.)
Upvotes: 29
Reputation: 71
I had a similar issue and it turned out that i had to add an extra entry in cmake
to include the files.
Since i was also using the zmq library I had to add this to the included libraries as well.
Upvotes: 1