Quelles sont les différences entre ces quatre mots (clés) en ligne?inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
Quelles sont les différences entre ces quatre mots (clés) en ligne?inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
inline
est le mot-clé, en C++ et C99.
__inline
est un mot clé spécifique au fournisseur (par exemple MSVC) pour la fonction inline dans C, car C89 ne l'a pas. Est similaire à __inline
mais provient d'un autre ensemble de compilateurs.
__forceinline
__forceinline
est un autre mot clé spécifique au fournisseur (principalement MSVC), qui appliquera plus de force pour aligner la fonction que l'indicateur __inline
(par exemple inline même si cela entraîne un code moins bon).
Il y a aussi __attribute__((always_inline))
dans GCC et clang.
__forceinline est un indice plus puissant que l'intégration, mais reste juste un indice (http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.80%29.aspx). –
Peut-être envisager de changer la langue «spécifique à Microsoft» en «spécifique au fournisseur» ou quelque chose comme ça. La plupart des jeux d'outils de développement croisé intégrés que j'utilise prennent également en charge __inline et __forceinline. Le monde est plus grand que MSOFT ;-) – Dan
Oops accidentellement CW-ed le poste. Peu importe. – kennytm
__inline
, et __forceinline
sont tous spécifiques à la mise en œuvre. En raison du double trait de soulignement, ils sont tous des identificateurs réservés à l'implémentation, donc ils ne doivent pas entrer en conflit avec les identifiants utilisés dans les applications.
inline
est le mot clé de la seule C.
Pour le compilateur Visual Studio cela signifie:
en ligne - suggestion au compilateur inline votre code
__forceinline - surcharge l'optimisation du compilateur intégré et génère du code en ligne
Pour plus det ails voir: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
Vous devriez également demander à la communauté quelle est la recommandation pour l'utilisation de en ligne. –