W8118 Inline-Member-Funktion in Package-Klasse

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Fehler und -Warnungen (C++) - Index

Eine mit PACKAGE -- for example, __declsepc(package) -- gekennzeichnete Klasse teilt dem Compiler mit, dass sie in einem Package implementiert ist. Das bedeutet, dass das Package die Klasse exportiert und Benutzerklassen die Klasse importieren. Der Compiler gibt deshalb eine Warnung aus, wenn er auf eine Member-Funktion trifft, die in einer PACKAGE-Klasse als inline gekennzeichnet ist. 'inline' teilt nämlich dem Compiler mit, die Funktion nicht wirklich zu exportieren/importieren, sondern im Rumpf des Aufrufers zu erweitern.

#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

};

Wenn möglich, hält sich der Compiler an die 'inline'-Anforderung von Methoden einer Klasse, die mit PACKAGE gekennzeichnet ist. Aber er erzeugt auch eine Warnung, weil die 'inline'-Anforderung in Widerspruch zu dem PACKAGE-Bezeichner steht.

Sie müssen entscheiden, ob eine 'inline'-Methode einer PACKAGE-Klasse wirklich sicher inline verwendet werden kann. Wenn ja, dann können Sie die Warnung ignorieren oder deaktivieren.