Гайд __forceinline in class with .cpp file (macro trick)

Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Мало кому понадобится, но возможно есть те, кто пытался использовать __forceinline в class'е с 2-мя файлами (.h, .cpp), однако ничего не вышло.
Есть конечно такие пути решения как:
- Писать всё в .h файл
- Отказаться от class'ов
Но нам это всё ведь не подходит, и тут приходят на помощь макросы visual studio.
Мы уже знаем что можно писать всё в 1 .h файл, но ведь это будет неудобно, однако макросы могут это сделать за нас тем самым сохранив читаемость кода:

.h file
C++:
#pragma once

class СSomeClass
{
public:
    int GetInt();

private:
    int m_iValue = 0;
};

static СSomeClass g_pSomeClass;

#include "СSomeClass.cpp"
.cpp file
C++:
#pragma once

#include "pch.h"
#include "Includes.h"

#ifndef CPP_TO_H_СSomeClass
#define CPP_TO_H_СSomeClass

__forceinline int СSomeClass::GetInt()
{
    m_iValue++;
    return m_iValue;
}

#endif

Минусы:
- Придется идеально связать файлы, чтобы не было переопределений и прочего. А для каждой вынесенной global переменной в .cpp файле с подобным классом придется добавить static.

Можно, конечно, плюнуть на class'ы с этими макросами, и фигачить просто функции:
.h file: int SomeFunction();
.cpp file: extern __forceinline int SomeFunction();
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Сверху Снизу