Bonsoir
J'ai un petit soucis de débutant avec g++.
Etant donné les quatre fichiers suivants:

1 - Fichier: a.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
#ifndef a_hpp
#define a_hpp
 
namespace foo
{
    void a();}
 
#endif
2 - Fichier: a.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include "a.hpp"
#include <iostream>
 
namespace foo
{
    static const m = 100;
    void a()
    {
        std::cout << m << std::endl;
    }
}
3 - Fichier: b.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
#ifndef b_hpp
#define b_hpp
 
namespace foo
{
    void b();
}
 
#endif
4 - Fichier: b.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#include "a.hpp"
#include "b.hpp"
#include <iostream>
 
namespace foo
{
    void b()
    {
        std::cout << m << std::endl;
    }
}
La commande g++ -c a.cpp génère un a.o (parfait).
Par contre quand je lance la commande g++ -c b.cpp le compilateur ne reconnait pas la variable m.
De ce fait ma question est double:
  1. pourquoi m n'est pas reconnue ?
  2. quelle commande g++ lancer pour pouvoir générer un b.o étant donné les fichiers précédent (sans changer le code) ?


Merci d'avance