Function Declaration vs Function Definition

What is the difference between Function Declaration and Function Definition

In C++ and other low-level languages such as Solidity, there is a commonly used term: declaring a function and defining a function. What’s the difference?

#include <iostream>

void Log(const char* message) {
    std::cout << message << std::endl;
}

int Multiply(int a, int b) {
    Log("A multiply function is being called");
    return a * b;
}

int main() {
    std::cout << Multiply(2, 5) << std::endl;
    std::cin.get();
}

Take a look at this C++ code named math.cpp which defines two functions called Multiply and Log. I used the term define here because the functions have its type, its name, its parameters and most importantly the functions contain a body. It is because the function has a body that it is referred to as a function definition. So, if a function with a body is a function definition, then that means that… exactly. It means that a function without a body is a function declaration. That’s it. It’s that simple.

Take a look at this code below, you’ll notice that the Log function no longer have a body, that means there is no curly braces and no code logic within a curly brace. The Log function in the below code is now declared. It is a function declaration.

#include <iostream>

void Log(const char* message);  // Function declaration

int Multiply(int a, int b) {
    Log("A multiply function is being called");
    return a * b;
}

int main() {
    std::cout << Multiply(2, 5) << std::endl;
    std::cin.get();
}

This subtle difference of a function having a body and not having a body is the difference between a function declaration and a function definition.

I hope you have learnt something from this article.

You can check out my other articles about C++, Rust, programming and technical concepts.

Thanks for reading. 🙂