- 1
- 2
- 3
- 4
objbase.h:
#define __STRUCT__ struct
#define interface __STRUCT__
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+42
objbase.h:
#define __STRUCT__ struct
#define interface __STRUCT__
спасибо Микрософт за счастливое детство соответствие стандарту при засирании глобального неймспейса своими больными фантазиями
absolut 03.10.2012 10:17 # +6
LispGovno 03.10.2012 10:24 # 0
Сделали бы тогда
Psionic 03.10.2012 13:47 # 0
absolut 03.10.2012 14:00 # +11
__tarasb
kovyl2404 06.04.2013 01:00 # +2
LispGovno 03.10.2012 10:29 # 0
Стандарт не запрещает засирать глобальный неймспейс, особенно при начинании идентификатора с __
Другое дело, что они создали какой-то не правильный interface - это да, за это их нужно наказать.
defecate-plusplus 03.10.2012 10:34 # +4
я несколько расстроился, обнаружив, что моё struct interface { ... };, отлично работающее под г++, под студией отказалось компилироваться с непонятной ошибкой - interface ведь не ключевое слово с++
bormand 03.10.2012 10:37 # +1
defecate-plusplus 03.10.2012 10:41 # +1
это тяжкое наследие СОМ
и кстати если сделать #undef, то ломается всё, что с СОМ у них связано
LispGovno 03.10.2012 10:54 # −3
> struct interface { ... };
ЧТДНТ.
Элсо interface в будущих стандартах может стать ключевым словом. Не стоит вносить возможную несовместимость.
defecate-plusplus 03.10.2012 11:31 # +3
текущая несовместимость с гениальными макросами студии уже вынудила меня переименовать структуру, описывающую состояние сетевого интерфейса
а ключевым словом может стать всё, что угодно - думаю, отныне стоит называть типы, переменные и члены класса как на всякий случай
TarasB 03.10.2012 11:58 # +2
defecate-plusplus 03.10.2012 12:05 # +3
собственно, если не пользоваться одновременно каким-нибудь COM, то проблемы нет
но в целом проблема актуальна, т.к.
roman-kashitsyn 03.10.2012 12:08 # +2
defecate-plusplus 03.10.2012 12:13 # +1
по крайней мере iface (ты попал в точку с новым именем структуры) не напряг капризный g++
bormand 03.10.2012 12:13 # 0
rat4 03.10.2012 12:28 # +3
defecate-plusplus 03.10.2012 12:42 # +1
LispGovno 03.10.2012 12:44 # +2
3.14159265 03.10.2012 13:25 # +4
bormand 03.10.2012 10:31 # +4
Только засрали глобальный неймспейс, да ввели в заблуждение людей, которым приходится раскуривать что же такое interface, которого нет в стандарте.
guest 12.10.2012 13:47 # −2
bormand 12.10.2012 15:17 # +1
Спасибо кэп. Вы удачно доебались до формулировки и открыли нам глаза.
Это как-то отменяет тот факт, что данный бесполезный макрос, не подчиняющийся привычным соглашениям по именованию, засирает собой все крестоблядские неймспейсы, а раздефайнить его внутри своих хедеров нельзя, потому что это приведет к нежелательной зависимости результата от порядка включения хедеров?