Здравствуйте, roman313, Вы писали:
R>Привет !
R>Что-то я совсем препроцессор забыл, может кто-подскажет,
R>как к примеру через #define определить команду
R>#pragma pack (push)
R>#pragma pack (pop)
R>#pragma pack (push, 1)
R>или подобные ?
Никак.
Компилятор С++ однопроходной и рекурсивные макроопределения не вычисляет.
Именно по этой причине невозможно записать, например, так:
// Работать не будет
#define DEFINE(A,B) #define A B
Здравствуйте, roman313, Вы писали:
R>Привет !
R>Что-то я совсем препроцессор забыл, может кто-подскажет,
R>как к примеру через #define определить команду
R>#pragma pack (push)
R>#pragma pack (pop)
R>#pragma pack (push, 1)
R>или подобные ?
RTFM
http://msdn.microsoft.com/en-us/library/d9x1s805.aspx
Здравствуйте, roman313, Вы писали:
R>Привет !
R>Что-то я совсем препроцессор забыл, может кто-подскажет,
R>как к примеру через #define определить команду
R>#pragma pack (push)
R>#pragma pack (pop)
R>#pragma pack (push, 1)
R>или подобные ?
Если правильно понимаю, то необходимо что-то подобное
#define SOMETHING /*#pragma pack(push, 1)*/ struct packed_struct {}; /*#pragma pack(pop)*/
?
Если да, то:
* для MS Visual C++ — использовать __pragma, как написал
AbyxАвтор: Abyx
Дата: 14.08.11
#define SOMETHING __pragma(pack(push, 1)) struct packed_struct {}; __pragma(pack(pop))
* для GCC, начиная с версии 4.5 (может и раньше):
#define SOMETHING struct packed_struct {} __attribute__((packed));
*для C++ Builder — решения не знаю. Кто-нибудь использовал аналоги для компилятора в этой среде программирования?
Да, так подойдет, спасибо
Здравствуйте, SX, Вы писали:
SX>Здравствуйте, roman313, Вы писали:
R>>Привет !
R>>Что-то я совсем препроцессор забыл, может кто-подскажет,
R>>как к примеру через #define определить команду
R>>#pragma pack (push)
R>>#pragma pack (pop)
R>>#pragma pack (push, 1)
R>>или подобные ?
SX>Если правильно понимаю, то необходимо что-то подобное
SX>SX>#define SOMETHING /*#pragma pack(push, 1)*/ struct packed_struct {}; /*#pragma pack(pop)*/
SX>
?
SX>Если да, то:
SX>* для MS Visual C++ — использовать __pragma, как написал AbyxАвтор: Abyx
Дата: 14.08.11
SX>SX>#define SOMETHING __pragma(pack(push, 1)) struct packed_struct {}; __pragma(pack(pop))
SX>
SX>* для GCC, начиная с версии 4.5 (может и раньше):
SX>SX>#define SOMETHING struct packed_struct {} __attribute__((packed));
SX>
SX>*для C++ Builder — решения не знаю. Кто-нибудь использовал аналоги для компилятора в этой среде программирования?