- 1
- 2
- 3
- 4
enum
{
MaxStringLen = 1024
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+132
enum
{
MaxStringLen = 1024
};
Офигенный метод объявления констант!
сорить глобальный контекст, тем более такими замечательными константами с такими выразитильными именами, это говно.
почти во всех С проектах в которых я учавствовал было правило что хидеры/етц должны быть юзабельными из С++. в одном проекте, один из центральных С хидеров с ключевыми определениями, в С++ пихался в свой нэймспейс. (extern "C" предотвращает нэйм манглинг, но с точки зрения С++ компилятора функции все равно находятся в нэйспэйсе.)
За исключением другого хидера (другой) библиотеки которая тоже определяет MAX_STRING_LEN?
Они тогда и в Си будут конфликтовать, а т.к. там нет неймспейсов - то там и enum'ы тоже будут конфликтовать. Поэтому кроме приписывания префикса вариантов особо и нет.
но по крайней мере если компилировать программу как С++, то этого конфликта между хидерами библиотек можно избежать. не панацея, но в реальной жизни часто помогает.
Ну и в любом случае остается еще конфликт на уровне компоновщика, который разбрасыванием по нейсмспейсам уже не устранить (т.к. мы обязаны включить extern "C").
Так что только префиксы, только хардкор ;)
Помнится, в Visual C++ 6.0 внутри класса нужно было писать именно енум, static const int MaxStringLen = 1024; не поддерживал компилятор.
> static const int MaxStringLen = 1024
Внутри класса некоторые компиляторы допускают инициализацию констант интегрального типа.
Но даже если и не допускает, то делают так:
const int Class::MaxStringLen = 1024; // вне класса
в стандарте С (даже в с89), конечно, есть const
статические константы интегрального типа с инициализацией внутри класса обязаны работать даже в с++98/с++03, просто vс 6.0 не совсем компилятор, поддерживающий стандарт
>просто vс 6.0 не совсем компилятор, поддерживающий стандарт
Делаем вывод
крестьян хлебом не корми, лишь бы стандарт был бы соблюдён
шарпеев хлебом не корми, лишь бы LINQ был
жаболюбов хлебом не корми, лишь бы код был на паттернах
КодоОбезьян хлебом не корми, лишь бы были бананы.
1Cников хлебом не корми, лишь бы на русском.
А Тараса чем ты не корми - он уже так растолстел, что на говнокод не влезает.
ждем 26 августа
хаскелистов хлебом не корми, лишь бы с лямбдами и монадами
лисперов хлебом не корми, лишь бы скобок побольше
питонистов хлебом не корми, лишь бы python-way
Паскалистов хлебом не корми, лишь бы не С++.
Бля. Началось.
Только вот их хер прокормишь...
ассемблерщиков хлебом не корми, лишь бы на такт быстрее
Похапешников хлебом не корми.
fxd