PDA

Visualizza la versione completa : [C] e [C++] Variabili globali static nell'header


Evethir
27-10-2017, 10:52
Buongiorno a tutti!
Sto programmando in [C++] con Qt e sto realizzando una libreria che contenga variabili che poi dovranno essere riutilizzate nel main.cpp.
Ho un attimo di confusione riguardo la definizione delle variabili ( per esempio di tipo "int") nell' header.
Da quanto visto in rete e nelle varie slide di teoria e' riportato che per definire la variabile nell'header è sufficiente avere

file del header lib.h :

int birba;

file del main:
#include <iostream>
#include "lib.h"
using namespace std;


birba =5;
cout<<birba<<endl;



il mimo cruccio sta nel fatto che il main non riesce a vedere "birba", per fare ciò è necessario definire la variabile come static ( quindi static int birba). Ma la direttiva static non la rende privata ???

Grazie delle attenzioni!

Scara95
27-10-2017, 13:07
Il tuo esempio in realtà funziona (se ci metti un main) https://onlinegdb.com/SJyZf9lCW
Ha tuttavia un grossissimo problema, se includi il file .h in più di un file la variabile risulterà definita più volte. Il modo corretto è dichiararla nel file .h e definirla in uno di quelli .cpp


//lib.h
#ifndef _LIB_H
#define _LIB_H
extern int birb;
#endif
//lib.cpp
#include "lib.h"
int birb;
//main.cpp
#include <iostream>
#include "lib.h"
using namespace std;


int main()
{
birb = 5;
cout << birb;


return 0;
}
https://onlinegdb.com/SyHV45eRb
P.S. non ho idea di quanto durino i link a quel sito perché l'ho trovato ora, ma la stessa quantità di informazioni è presente nel testo di risposta.

Loading