Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C++] Linkage

  1. #1
    federi
    Guest

    [C++] Linkage

    codice:
    Fede.cpp
    
    #include <iostream>
    #include "fede2.cpp"
    
    extern int a; //Linkgae esterno
    static int b=5; //Linkage interno
    int main(int argc, char *argv[])
    {
    
      cout << a << endl;
      return 0;
    }
    codice:
    Fede2.cpp
    
    int a = 0; //Linkage Esterno
    static int b; //Linkgae Interno

    Perchè quando compilo mi dice che il tipo di variabile b è già definita se io uso il prefisso STATIC per quella variabile?


  2. #2
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Normale.
    La dichiarazione di una variabile static in un modulo di codice serve a renderla globale in quel modulo senza poterla utilizzare in altri moduli.
    Nel tuo caso, però, l'inclusione del file ti frega: includere un file C/C++ in un altro è funzionalmente equivalente a riportarne il contenuto per intero.
    ChReAn
    -------------------

    Slackware 9.1 powered

  3. #3
    Vedi quello che è già stato spiegato qua sopra.

    Aggiungo che ciò avviene perchè una variabile static è privata solo all'interno di un file Oggetto (un modulo), includendo un file cpp in un altro crei un unico file oggetto, dovresti invece compilare i due file separatamente (creare due file oggetto) e quindi linkarli insieme (creare un unico file exe).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.