web-dev-qa-db-fra.com

en ligne vs __inline vs __inline__ vs __forceinline?

Quelles sont les différences entre ces quatre mots (clés) en ligne?

inline, __inline, __inline__, __forceinline.

66
Xavier Ho

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 en C, car C89 ne l'a pas.

__inline__ Est similaire à __inline Mais provient d'un autre ensemble de compilateurs.

__forceinline Est un autre mot clé spécifique au fournisseur (principalement MSVC), qui appliquera plus de force pour intégrer la fonction que l'indication __inline (Par exemple, en ligne même si cela entraîne un code plus mauvais).

Il y a aussi __attribute__((always_inline)) dans GCC et clang.

83
kennytm

__inline, __inline__ et __forceinline sont toutes spécifiques à l'implémentation. En raison du double soulignement, ce sont tous des identifiants réservés à l'implémentation et ne devraient donc pas entrer en conflit avec les identifiants utilisés dans les applications.

inline est le seul mot clé C++.

20
CB Bailey

Pour le compilateur Visual Studio, cela signifie:

  • inline - suggestion au compilateur pour inline votre code

  • __ forceinline - remplace l'optimisation du compilateur intégré et génère du code en ligne

Pour plus de détails, voir: http://msdn.Microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx

8