Я хочу использовать макросы для быстрого создания встроенных функций в заголовках, эти функции относятся к базовому классу, который я подклассифицирую.Я помещу определения в базовый заголовок calss, но я не хочу загрязнять все, что включает эти заголовки, всеми определениями макросов, поэтому я хотел бы написать что-то вроде этого (что, к сожалению, не работает):
#define BEGIN_MACROS \
#define MACRO_1(...) ...\
#define MACRO_2(...) ...\
#define MACRO_3(...) ...
#define END_MACROS \
#undef MACRO_1\
#undef MACRO_2\
#undef MACRO_3
И затем используйте это как:
BEGIN_MACROS
MACRO_1(...)
MACRO_2(...)
MACRO_3(...)
END_MACROS
возможно, я должен использовать что-то подобное?
#include "definemacros.h"
MACRO_1(...)
MACRO_2(...)
MACRO_3(...)
#include "undefmacros.h"
И поместить определения и "неопределенные определения" в два отдельных заголовка ...
Или есть лучший подход к преодолению проблем такого рода?Или вы предлагаете вообще избегать использования макросов и / или макросов в заголовках?
Отредактировано для включения конкретного варианта использования:
определение:
#define GET_SET_FIELD_VALUE_INT(camelcased, underscored)\
inline int rget ## camelcased () { return this->getFieldValue( #underscored ).toInt(); }\
inline void rset ## camelcased (int value) { this->setFieldValue( #underscored , value); }
use:
class PaymentRecord : public RecObj
{
public:
GET_SET_FIELD_VALUE_INT(PriceIndex, price_index)
//produces this
inline int rgetPriceIndex() { return this->getFieldValue("price_index").toInt(); }
inline void rsetPriceIndex(int value) { this->setFieldValue("price_index", value); }
};