Question: Im writing a program where I need two different .cpp files, the first with my main and second with a few functions that are to be used in the main. Do I also need a header file for initialization? Not too sure how to go about the #includes.. any help is appreciated!

Answer: 
When you want to use multiple `.cpp` files -

* The `.h` file will basically be used to link the `.cpp` files together.
* You would put your function declarations in the `.h` file.
* You would include the `.h` file in your main `.cpp` file.
* You would write your functions in your functions `.cpp` file and also include the `.h` file.

Check out this link for more info - [Multiple .cpp file programs](http://www.cplusplus.com/forum/beginner/75734/).
This should suit you.

Your `main.cpp` file:

```
// main.cpp
#include "header.h" // bring in the declarations

// some function that performs initialization.
// it is static so it cannot be seen outside of this compilation unit.
static void init_function() {

}

// initialization functions etc. here
int main(int argc, char *argv[]) {

  return 0;
}

```

Your `header.h` file:

```
// header.h
#ifndef HEADER_H_INCLUDED_
#define HEADER_H_INCLUDED_
// this is an include guard, google the term

// function declaration
int my_function();

#endif /* HEADER_H_INCLUDED_ */

```

Your `header.cpp` file:

```
// header.cpp 
//
// file containing the definitions for declarations in header.h
#include "header.h"

// definition of my_function
int my_function() {
// do cool stuff
}

// some helper function that is not to be used outside of
// header.cpp
static int helper_function() {

}

```

Header files are only necessary for functions and classes which you want to expose to other compilation units. I assume you don't want to expose your initialization functions to any other module, so it is OK to not declare them in a header file. They should also be marked `static` so they don't have external linkage.

In C++ you can also use anonymous namespaces to give something internal linkage, but this should not concern you for now.