- 1
- 2
- 3
#define REGISTER_PACKET(cls, type)\
__declspec(selectany) PacketType cls::s_type = CPacketFactory::RegisterPacket(type, cls::CreateNew); \
__pragma(comment(linker, "/include:?s_type@##cls##@@2W4PacketType@@C"))
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+13.1
#define REGISTER_PACKET(cls, type)\
__declspec(selectany) PacketType cls::s_type = CPacketFactory::RegisterPacket(type, cls::CreateNew); \
__pragma(comment(linker, "/include:?s_type@##cls##@@2W4PacketType@@C"))
Очень правильный код... Делать можно только так.
Говногость 18.08.2009 15:18 # 0
62316e 18.08.2009 18:11 # 0
И что это значит?
Это значит, что никакого стандарта на самом деле нету. Name mangling везде разный. Даже если этот Говнокод #1616 в каком-то конкретном случае и решит кукую-то проблему, на каком-то конкретном компиляторе, какой-то конкретной версии... итд итд
Говногость 18.08.2009 20:10 # 0
Потому это и написал. Подругому там врятли что-то можно сделать... Если конечно, не искать более лёгких путей, но в обход стандарта, то всё скорее всего было-бы переносимо.
inkanus-gray 04.06.2016 13:03 # 0
Pragma на всех компиляторах разные.
Это значит, что C++ не нужен.
schizoid2 18.08.2009 21:26 # 0
А тут еще такие кренделя с линковщиком.
guest 19.08.2009 22:53 # 0
guest 19.08.2009 23:14 # 0
guest 19.08.2009 23:26 # 0
guest 20.08.2009 19:13 # 0
guest 24.09.2009 19:03 # 0
Говногость 08.01.2010 22:34 # 0