- 1
- 2
- 3
- 4
enum
{
MaxStringLen = 1024
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+132
enum
{
MaxStringLen = 1024
};
Офигенный метод объявления констант!
bormand 13.08.2012 18:22 # +1
glook 13.08.2012 18:23 # +3
bormand 13.08.2012 18:38 # +4
Dummy00001 13.08.2012 19:28 # −1
сорить глобальный контекст, тем более такими замечательными константами с такими выразитильными именами, это говно.
bormand 13.08.2012 19:32 # +5
Dummy00001 13.08.2012 19:48 # +1
почти во всех С проектах в которых я учавствовал было правило что хидеры/етц должны быть юзабельными из С++. в одном проекте, один из центральных С хидеров с ключевыми определениями, в С++ пихался в свой нэймспейс. (extern "C" предотвращает нэйм манглинг, но с точки зрения С++ компилятора функции все равно находятся в нэйспэйсе.)
bormand 13.08.2012 20:18 # +4
3.14159265 13.08.2012 20:39 # +1
Dummy00001 13.08.2012 22:27 # +1
За исключением другого хидера (другой) библиотеки которая тоже определяет MAX_STRING_LEN?
scriptin 13.08.2012 23:36 # +3
Dummy00001 13.08.2012 23:41 # +3
scriptin 13.08.2012 23:51 # +4
roman-kashitsyn 13.08.2012 23:39 # +5
bormand 14.08.2012 05:13 # +1
Они тогда и в Си будут конфликтовать, а т.к. там нет неймспейсов - то там и enum'ы тоже будут конфликтовать. Поэтому кроме приписывания префикса вариантов особо и нет.
Dummy00001 14.08.2012 13:04 # +1
но по крайней мере если компилировать программу как С++, то этого конфликта между хидерами библиотек можно избежать. не панацея, но в реальной жизни часто помогает.
bormand 14.08.2012 13:20 # +1
Ну и в любом случае остается еще конфликт на уровне компоновщика, который разбрасыванием по нейсмспейсам уже не устранить (т.к. мы обязаны включить extern "C").
Так что только префиксы, только хардкор ;)
Steve_Brown 14.08.2012 09:42 # 0
Помнится, в Visual C++ 6.0 внутри класса нужно было писать именно енум, static const int MaxStringLen = 1024; не поддерживал компилятор.
absolut 14.08.2012 10:16 # 0
> static const int MaxStringLen = 1024
Внутри класса некоторые компиляторы допускают инициализацию констант интегрального типа.
Но даже если и не допускает, то делают так:
const int Class::MaxStringLen = 1024; // вне класса
defecate-plusplus 14.08.2012 10:24 # +5
в стандарте С (даже в с89), конечно, есть const
статические константы интегрального типа с инициализацией внутри класса обязаны работать даже в с++98/с++03, просто vс 6.0 не совсем компилятор, поддерживающий стандарт
absolut 14.08.2012 10:38 # 0
>просто vс 6.0 не совсем компилятор, поддерживающий стандарт
Делаем вывод
bormand 14.08.2012 10:39 # +9
bormand 14.08.2012 10:36 # +1
defecate-plusplus 14.08.2012 10:52 # +2
glook 14.08.2012 13:26 # +2
roman-kashitsyn 14.08.2012 13:37 # +5
крестьян хлебом не корми, лишь бы стандарт был бы соблюдён
шарпеев хлебом не корми, лишь бы LINQ был
жаболюбов хлебом не корми, лишь бы код был на паттернах
3.14159265 14.08.2012 13:48 # +7
КодоОбезьян хлебом не корми, лишь бы были бананы.
1Cников хлебом не корми, лишь бы на русском.
А Тараса чем ты не корми - он уже так растолстел, что на говнокод не влезает.
absolut 14.08.2012 15:11 # +2
ждем 26 августа
bormand 14.08.2012 13:50 # +4
хаскелистов хлебом не корми, лишь бы с лямбдами и монадами
лисперов хлебом не корми, лишь бы скобок побольше
питонистов хлебом не корми, лишь бы python-way
3.14159265 14.08.2012 13:51 # +4
Паскалистов хлебом не корми, лишь бы не С++.
Бля. Началось.
bormand 14.08.2012 13:52 # 0
3.14159265 14.08.2012 14:00 # +1
Только вот их хер прокормишь...
rat4 14.08.2012 14:21 # +3
HaskellGovno 14.08.2012 17:29 # +6
rat4 14.08.2012 17:45 # +4
guest 14.08.2012 15:14 # +7
ассемблерщиков хлебом не корми, лишь бы на такт быстрее
DBdev 14.08.2012 19:01 # +4
vistefan 16.08.2012 17:16 # +3
Похапешников хлебом не корми.
fxd
defecate-plusplus 14.08.2012 14:25 # +2
guest 16.10.2012 21:23 # −1