W8118 Fonction membre inline dans la classe Package (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Erreurs et avertissements du compilateur (C++) - Index

Une classe est marquée PACKAGE -- par exemple, __declsepc(package) -- pour permettre au compilateur de savoir qu'il est implémenté dans un package. Ceci signifie que le package exporte la classe et que les consommateurs l'importent. C'est pourquoi le compilateur émet un avertissement quand il voit une fonction membre marquée inline dans une classe PACKAGE. Ceci survient car inline suggère au compilateur que la fonction ne doit pas être réellement exportée / importée, mais qu'elle doit être développée in-situ dans le corps de l'appelant.

#include <System.hpp>
#include <Classes.hpp>
#include <iostream>

class PACKAGE TFoo : public TComponent
{
     public:
            void inline bar() { std::cout<<"I warn people"<<std::endl;} // W8118

};

Autant que possible, le compilateur honorera la requête 'inline' des méthodes d'une classe marquée PACKAGE. Mais il générera aussi un avertissement étant donné que la requête inline est en contraction avec le spécificateur PACKAGE.

Vous devez déterminer si chaque méthode inline d'une classe PACKAGE est réellement sécurisée pour être inline. Si oui, vous pouvez ignorer ou désactiver l'avertissement.