Я преобразовал следующий код из cpp в Objective C
xyz.h
#define DECLARE_RS232_NEWMSG(ClassName,ClassID) \
+(ClassName*)FromMsg:(RS232Msg*)pMsg \
{ \
ClassName* ivar = [[ClassName alloc]init]; \
return [ pMsg]; \
} \
+(RS232Msg*)NewMsg \
{ \
return new ClassName; \
} \
enum {ID = ClassID};
xyz.m
@implementation RS232MsgGetEventDescriptions
+ (id)getID
{
DECLARE_RS232_NEWMSG(RS232MsgGetEventDescriptions,RM_GET_EVENT_DESCRIPTIONS);
return ID;
}
@end
получение ошибок при использовании NewMsg , ID , FromMsg из других файлов. Я включил все файлы заголовков.
РЕДАКТИРОВАНИЕ:
RS232MsgGetEventDescriptions.h
#define DECLARE_RS232_NEWMSG(ClassName, ClassID) \
enum {ID = ClassID}; \
@interface ClassName: NSObject {} \
+(ClassName*)FromMsg:(RS232Msg*)pMsg; \
+(RS232Msg*)NewMsg; \
@end;
#define DEFINE_RS232_NEWMSG_IMPLEMENTATION(ClassName, ClassID) \
+(ClassName*)FromMsg:(RS232Msg*)pMsg \
{ \
ClassName* ivar = [[ClassName alloc]init]; \
return [ivar pMsg]; \
} \
+(RS232Msg*)NewMsg \
{ \
return [[ClassName alloc]init]; \
} \
+ (id)getID \
{ \
return ID; \
} \
@interface RS232MsgGetEventDescriptions : RS232Msg{
@public
DECLARE_RS232_NEWMSG(RS232MsgGetEventDescriptions,RM_GET_EVENT_DESCRIPTIONS);
}
@end
RS232MsgGetEventDescriptions.m
@implementation RS232MsgGetEventDescriptions
-(id)init
{
if (self = [super init]) {
DEFINE_RS232_NEWMSG_IMPLEMENTATION(RS232MsgGetEventDescriptions,RM_GET_EVENT_DESCRIPTIONS);
}
return self;
}
@end
Необъявленная ошибка FromMsg и необъявленная ошибка NewMsg.
ошибка: ожидаемый список спецификаторов-спецификаторов перед «интерфейсом»
ошибка: ожидаемый список спецификаторов-спецификаторов перед маркером '+'
ошибка: ожидаемый список спецификаторов-спецификаторов перед 'end'
ошибка: ожидаемый список спецификаторов-спецификаторов перед «интерфейсом»
ошибка: ожидаемый список спецификаторов-спецификаторов перед маркером '+'
ошибка: ожидаемый список спецификаторов-спецификаторов перед 'end'
ошибка: «NewMsg» необъявлен (первое использование в этой функции)