Significado de extern em C++

Ligações externas.


Significado de extern em C++

O especificador extern é usado nas declarações de variáveis e funções (exceto membros de classe ou parâmetros de função). Ele especifica a ligação externa e não afeta tecnicamente a duração do armazenamento, mas não pode ser usado em uma definição de um objeto de duração de armazenamento automático, portanto, todos os objetos extern têm durações estáticas ou de encadeamento.

Isso é útil quando você tem variáveis globais e declara a existência delas em um cabeçalho, de forma que cada arquivo de origem que inclui o cabeçalho saiba sobre ele, mas você só precisa “defini-lo” uma vez em um de seus arquivos de origem.

Exemplo, Suponhamos que você tenha 3 arquivos e fará link de dois arquivos:

vim global.hpp

#ifndef GLOBAL_H
#define GLOBAL_H

// qualquer arquivo que incluir esse cabeçalho será capaz de usar "var_global"
extern float var_global;

void the_func();

#endif

vim global.cpp

#include <iostream>
#include "global.hpp"

void the_func(){
    // imprime a variável global:
    std::cout << var_global << '\n';
}

vim main.cpp

#include "global.hpp"

// ela será definida aqui
float var_global;

int main(){
    var_global = 9.36f;
    the_func();
}

Após compilar a saída será: 9.36, mas disponível para todos os arquivos.

Outra forma de uso da palavra-chave extern é para compilar projetos C++ em C, por exemplo.

Suponhamos que você está escrevendo um plugin/extensão para um programa escrito C, mas está usando C++, então você pode alterar o contexto do seu código para C .

Exemplo:

#include <iostream>

extern "C" {
  namespace terroo {
    class DarthVader{
      public:
        DarthVader(){
          std::cout << "Eu sou o seu pai." << '\n';
        }
        ~DarthVader(){
          std::cout << "Nãããããããããooooooooo ..." << '\n';
        }
    };
  }
}

int main( int argc , char **argv ){
  terroo::DarthVader t;
  return 0;
}

Se um programa for escrito em C ele funcionará com esse código, mesmo usando classes, construtores, destrutores, namespace,…

Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!


cppdaily cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!