Liaison interne C++ de const

1. Analyse de principe

Supposons que vous mettiez des constantes dans un fichier d'en-tête et que vous utilisiez ce fichier d'en-tête dans plusieurs fichiers du même programme,
Si la liaison d'une déclaration const globale est externe comme une variable régulière, cela ira mal sous la règle de définition unique. Cependant, la variable globale modifiée par const dans le fichier d'en-tête est incluse par plusieurs fichiers et aucune erreur ne sera signalée. Par conséquent, on peut constater que la possibilité de liaison de la variable globale modifiée par const est interne.
Conclusion : Par défaut, le lien des variables globales est externe, mais le lien des variables globales const est interne.
2. Exemple de code
test.sh
#ifndef TEST_H
#define TEST_H
const int num =3;//const修饰的全局变量num,链接性为内部的,效果等同于static,因此该头文件可以在多                    
                 //个文件中引用,否则将报错

#endif 

fichier1.cpp

#include <iostream>
#include "test.h"


void remote_access();
using namespace std;

int main()
{

    cout<<"main() num="<<num<<endl;
    remote_access();
 
    return 0;
}

fichier2.cpp

#include <iostream>

#include "test.h"

 annuler remote_access()

{

    en utilisant l'espace de noms std ;

    cout<<"accès_distant() num="<<num<<endl ;

}

Compilez les deux fichiers ci-dessus :

g++ file1.cpp file2.cpp -o filetest

Je suppose que tu aimes

Origine blog.csdn.net/banzhuantuqiang/article/details/130938290
conseillé
Classement