Импорт встроенных функций в MinGW

Я использую разделяемую библиотеку, которая определяет встроенные функции в своем заголовке.

Вот сокращенный тестовый пример, как видно из ссылки на библиотеку модуля компиляции (для версии, видимой библиотекой, просто заменитеdllimport отdllexport).

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

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

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

Компиляция этого дает предупреждение:

warning: 'int MyClass::myFunc1()' redeclared without dllimport attribute after being referenced with dll linkage [enabled by default]

Обратите внимание, что порядок, в котором определяются функции, важен, так как определениеmyFunc1 до определенияmyFunc2 не приводит к предупреждениям.

Также обратите внимание, что этот код компилируется без предупреждений в Visual C ++. Эти предупреждения относятся, по крайней мере, к MinGW, может быть, к GCC в целом. Изменить: мне пришло в голову, что мне, возможно, придется проверить, не блокируется ли предупреждение одним из флагов, установленных проектом.

Мои вопросы тогда:

Why this behavior ? Declaring myFunc1 as inline inside the class declaration fixes the problem. Why is that ? It's also against the recommended way of doing things. Is there another (better ?) way to fix this problem ?

Ответы на вопрос(2)

Ваш ответ на вопрос