__forceinline и inline использование

При использовании __forceinline или inline внутри класса нужно ли включать определение в файл заголовка в MSVC? Я слышал смешанные мнения по этому вопросу, которые варьируются в зависимости от разных компиляторов.

Пример 1:

//some_class.hpp
class some_class
{
public:
__forceinline void some_function();
inline void other_function();
};

//some_class.cpp
void some_class::some_function() { }
void some_class::other_function() { }

Пример 2:

//some_class.hpp
class some_class
{
public:
__forceinline void some_function() { }
inline void other_function() { }
};

0

Решение

В MSVC выход из определения функции в файле .cpp вызывает unresolved external symbol ошибка при связывании, если функция была ранее явно объявлена ​​как inline, __inline или же __forceinline, Поэтому я думаю, что нужно поместить определение функции в заголовок. Это имеет смысл, потому что для того, чтобы на самом деле встроить функцию, ее тело должно быть доступно для компилятора.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]