-
Автор темы
- #1
Мало кому понадобится, но возможно есть те, кто пытался использовать __forceinline в class'е с 2-мя файлами (.h, .cpp), однако ничего не вышло.
Есть конечно такие пути решения как:
- Писать всё в .h файл
- Отказаться от class'ов
Но нам это всё ведь не подходит, и тут приходят на помощь макросы visual studio.
Мы уже знаем что можно писать всё в 1 .h файл, но ведь это будет неудобно, однако макросы могут это сделать за нас тем самым сохранив читаемость кода:
.h file
.cpp file
Минусы:
- Придется идеально связать файлы, чтобы не было переопределений и прочего. А для каждой вынесенной global переменной в .cpp файле с подобным классом придется добавить static.
Можно, конечно, плюнуть на class'ы с этими макросами, и фигачить просто функции:
.h file:
.cpp file:
Есть конечно такие пути решения как:
- Писать всё в .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"
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();