Importowanie funkcji inline w MinGW

Używam biblioteki współdzielonej, która definiuje funkcje wbudowane w swoim nagłówku.

Oto zredukowany przypadek testowy widziany przez jednostkę kompilacyjną łączącą się z biblioteką (dla wersji widzianej przez bibliotekę, po prostu zastąpdllimport przezdllexport).

class __declspec(dllimport) MyClass {
public:
    int myFunc2();
    int myFunc1();
};

inline int MyClass::myFunc2(void) {
    return myFunc1();
}

inline int MyClass::myFunc1(void) {
    return 0;
}

Kompilacja daje ostrzeżenie:

warning: 'int MyClass :: myFunc1 ()' redeclared bez atrybutu dllimport po odwołaniu do dll linkage [domyślnie włączone]

Należy pamiętać, że kolejność definiowania funkcji jest ważna, jak umieszczenie definicjimyFunc1 przed definicjąmyFunc2 skutkuje brakiem ostrzeżeń.

Zauważ również, że ten kod kompiluje się bez ostrzeżeń w Visual C ++. Te ostrzeżenia są specyficzne co najmniej dla MinGW, a może ogólnie dla GCC. Edytuj: przyszło mi do głowy, że być może będę musiał sprawdzić, czy ostrzeżenie nie jest blokowane przez jedną z flag ustawionych przez projekt.

Moje pytania to:

Dlaczego to zachowanie?DeklaracjamyFunc1 tak jakinline wewnątrz deklaracji klasy rozwiązuje problem. Dlaczego ? To także przeciwkozalecany sposób robienia rzeczy.Czy istnieje inny (lepszy?) Sposób na rozwiązanie tego problemu?

questionAnswers(2)

yourAnswerToTheQuestion