Our next topic is function declarations and prototypes. So far, what we've been using is definitions which are also declarations. But what if main didn't yet see the definition of a function that it's trying to use? You would see an error. For example, you could try to use a print f without sharp include standard lib. Not standard lib but standard io.h. You would get an error that something was undeclared. So we need to know a declaration before we get to use something including a function. The way to get around that, why you can also declare something first before it's defined is what's also called a prototype. So we can say double cube double semi-colon that acts as a declaration. Then in main we can call cube and there's an expectation that we would have the actual code, the definition somewhere else. Typically it might be after main, and this would work perfectly fine. Or when we get to very complex programs, we would have multi-file programs. The definition may also be found in a further file. This definition or also called a prototype, known as prototype, can be just with the parameter types or with names for the parameters. So you can just double cube double x just as well as saying double cube double, leaving off its name. So also sometimes known as a signature ,becomes important when you move on to languages like Java and C++, which allow what are called overloading a functions, giving functions of the same signature different meanings, well of the same name with different signatures, different meanings. Don't worry about that until you get to those. If you are going to move onto C++ in the sequence, you'll find out a lot about that. There's also the special signature for a variable argument list. So as we've already found out, when we call print f, we can give it a format string, and then we can give it a whole bunch of variables. That since it's a variable and its argument lists can be shown as dot dot dot namely the ellipsis argument list. Of course, these things are defined in include standard io.h, and it gets you these declarations which you've already been using.