# 8.1 - Protótipo de Função

Nos exemplos, criamos nossas funções acima da nossa função main.

Se criarmos abaixo, por conta da ordem de compilação o C++ acaba não reconhecendo a função que está sendo chamada,pois ela ainda não existe

Mas temos uma forma de manipular isso:























#include <iostream>

void ExibirNome(std::string nome);

int main()
{
    /*|--------------------------------------|
     *|                                      |
     *|           He4rt Developers           |
     *|                                      |
     *|--------------------------------------|
     */

    std::string a = "Joao";
    ExibirNome(a);
}

void ExibirNome(std::string nome)
{
    std::cout <<"O nome e: "<< nome << std::endl;
}

O que fizemos foi:

Indicar que existe uma função ExibirNome, sendo um protótipo, e apos a função main executar sua lógica.

# #define

Podemos por meio do #define indicar algo a ser substituido antes de ser executado

Antes do início da compilação, todos os nossos #define's são substituidos pelos seus respectivos valores.
































#include <iostream>
#include <string>
#include <array>

#define QNT_ALUNOS 3

void exibir_nome(std::array<std::string, ALUNOS> arr);

int main()
{
    /*|--------------------------------------|
     *|                                      |
     *|           He4rt Developers           |
     *|                                      |
     *|--------------------------------------|
     */

    std::array<std::string, QNT_ALUNOS> nomes; // Um array de string de 3 posições

    for(std::string &element : nomes) // & significa que estamos passando a referência de uma posição em nomes, teremos uma seção explicanto o que é uma referência.
        std::cin >> element;

    exibir_nome(nomes);
}

void exibir_nome(std::array<std::string, QNT_ALUNOS> arr)
{
    for(std::string &element : arr)
        std::cout << element << " ";
}