Here’s our completed header file: add.h: // We really should have a header guard here, but will omit it for simplicity (we'll cover header guards in the next lesson) // This is the content of the .h file, which is where the declarations go int add(int x, int y); // function prototype for add.h -- don't forget the semicolon! In order to use this header file in main.cpp, we have to #include it (using quotes, not angle brackets). main.cpp: #include "add.h" // Insert contents of add.h at this point. Note use of double quotes here. #include int main() { std::cout << "The sum of 3 and 4 is " << add(3, 4) << '\n'; return 0; } add.cpp: #include "add.h" // Insert contents of add.h at this point. Note use of double quotes here. int add(int x, int y) { return x + y; } When the preprocessor processes the #include "add.h" line, it copies the contents of add.h into the current file at that point. Because our add.h contains a forward declaration for function add(), that forward declaration will be copied into main.cpp. The end result is a program that is functionally the same as the one where we manually added the forward declaration at the top of main.cpp.