Exercice 33
Énoncé
a. Transformer le programme suivant pour que la fonction fct devienne une fonction
en ligne.
#include
using namespace std ;
main()
{ int fct (char, int) ; // déclaration (prototype) de fct
int n = 150, p ;
char c = 's' ;
p = fct ( c , n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
int fct (char c, int n) // définition de fct
{ int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
b. Comment faudrait-il procéder si l’on souhaitait que la fonction fct soit compilée
séparément ?
a. Nous devons donc d’abord déclarer (et définir en même temps) la fonction fct
comme une fonction en ligne. Le programme main s’écrit de la même manière, si ce
n’est que la déclaration de fct n’y est plus nécessaire puisqu’elle apparaît
auparavant (il reste permis de la déclarer, à condition de ne pas utiliser le
qualificatif inline).
#include
using namespace std ;
inline int fct (char c, int n)
{ int res ;
if (c == 'a') res = n + c ;
else if (c == 's') res = n - c ;
else res = n * c ;
return res ;
}
main ()
{ int n = 150, p ;
char c = 's' ;
p = fct (c, n) ;
cout << "fct (\'" << c << "\', " << n << ") vaut : " << p ;
}
b. Il s’agit en fait d’une question piège. En effet, la fonction fct étant en ligne, elle ne
peut plus être compilée séparément. Il est cependant possible de la conserver dans
69
Précédent

- 70/398

Suivant