Bonjour,
J'ai "resolu" aujourd'hui (sans doute par un coup de chance...) un soucis que j'avais et qui a fortement attise ma curiosite. Je vais reproduire en simplifie le soucis ici afin de poser ma question :p
Voici un header (file.hh)
La fonction 'ns::incrVar()' est inline. Elle incremente 'var' et affiche sa nouvelle valeur (file.hxx)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Et enfin, la fonction 'ns::foo()', qui ne fait qu'afficher la valeur de 'var' (file.cc)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Faisons des tests avec une fonction 'main()' (main.cc)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
Pas de warning ni d'erreur a la compilation, alors c'est parti...
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
Si l'on m'avait pose la question "Quel sera le contenu de la sortie standard ?", j'aurais sans hesite repondu :
... Et je me serais trompe : la valeur de 'var' affichee par ns::foo() est '0' (et non '3').
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Pour que 'ns::foo()' affiche '3', il aurait fallu que 'ns::incrVar()' soit dans le .cc, et donc pas inline. (Dans ce cas, on aurait un warning pour une variable non utilisee, mais ca "fonctionnerait").
Donc la, pour moi, ca devient assez bizarre : une variable dans un namespace anonyme serait accessibe dans le header et les sources, mais n'aurait pas la meme valeur dans le .hh (ou .hxx) et dans le .cc ??
Il y a tres certainement une explication... et c'est ce que je vous demande ici
Merci d'avance ^^ (C'est pas presse, c'est de la curiosite :p)
PS : desole pour les accents :s

 

 
		
		 
         
 

 
			
			

 
   


 Variable dans un namespace anonyme et fonction inline
 Variable dans un namespace anonyme et fonction inline
				
 Répondre avec citation
  Répondre avec citation
Partager