2016-03-10 5 views
-1

В настоящее время я работаю над проектом, в котором я использую одни и те же макросы снова и снова в том же порядке для сериализации класса. Я использую макросы ускорения для сериализации. А именно:Объединить два (три) макроса

BOOST_CLASS_EXPORT(SameClass) 
BOOST_SERIALIZATION_FACTORY_0(SameClass) 

Как совместить эти два в один макрос.

#define registrateDMP(arg) BOOST_CLASS_EXPORT(arg) BOOST_SERIALIZATION_FACTORY_0(arg) 

не работает. Кроме того, я хотел бы, чтобы добавить третий макрос в полный макрос, если это действительно возможно.

#define DMPTYPE_BASICDMP_GUID boost::serialization::guid<SameClass>() 

Если я использую три макросов самостоятельно моя программа работает, но так как звонки для макросов всегда в том же порядке, и я использую их для многих различных случаев и хотят использовать их для более, а также было бы неплохо упростить команды одному макросу. Может ли кто-нибудь помочь? Спасибо

+0

Не могли бы вы показать ошибки, которые вы получаете, когда вы используете 'registrateDMP' пожалуйста? Я ожидаю, что это сработает. (BTW 'registerDMP' может быть лучше по-английски, если вам интересно.) –

+0

' неизвестное местоположение (0): фатальная ошибка в «test_BasicDMP»: std :: logic_error: basic_string :: _ S_construct null not valid' - ошибка, которую я получаю в тестовом файле который обычно работает. – Lenny

+0

Это ошибка вашего кода, которая встречается во время выполнения и не имеет никакого отношения к какому-либо макросу. Если возникла какая-либо проблема с макросом, ваш код не будет компилироваться в первую очередь. –

ответ

0

попробовать это:

#define registrateDMP(arg)\ 
BOOST_CLASS_EXPORT(arg)\ 
BOOST_SERIALIZATION_FACTORY_0(arg) 

Или это:

#define registrateDMP(arg)\ 
{{BOOST_CLASS_EXPORT(arg);}\ 
{BOOST_SERIALIZATION_FACTORY_0(arg);}}