Re: Question de c/cpp

トップ ページ

このメッセージに返信
著者: Edgar Bonet
日付:  
To: guilde
題目: Re: Question de c/cpp
Bonjour la Guilde !

Raphaël Dorado a écrit :
> La solution sale et rapide, c'est de rajouter "static" devant chaque
> fonction déclarée dans ludcmp.h.


Une autre solution est de qualifier ces fonctions de « inline » plutôt
que « static ». Historiquement, « inline » demandait au compilateur de
recopier le corps de la fonction au point d'appel. Cependant, les
compilateurs modernes ont tendance à ignorer ça et à décider par eux
mêmes. Un effet secondaire de « inline » est que tu as le droit de
définir la fonction dans plusieurs unités de compilation, à condition
que ces définitions soient identiques. Si le compilateur décide de faire
une vraie fonction appelable, alors ces définitions seront combinées par
l'éditeur de liens en use seule :

  – static : une implémentation par unité de compilation
  – inline : une implémentation unique partagée par toutes les unités de
    compilation.


Après, si les fonction sont non triviales, la bonne solution consiste à
mettre leur implémentation dans un fichier .cpp, et laisser les seules
déclarations dans le .h.

À+,

Edgar.