- 1
- 2
- 3
- 4
- 5
- 6
__forceinline BYTE ClampShortToByte(signed short value)
{
value>255?value=255:( value<0?value=0:NULL );
return (BYTE)value;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+176
__forceinline BYTE ClampShortToByte(signed short value)
{
value>255?value=255:( value<0?value=0:NULL );
return (BYTE)value;
}
+162
#ifdef WIN32
string nameOfLibToLoad("C:\opt\lib\libctest.dll");
lib_handle = LoadLibrary(TEXT(nameOfLibToLoad.c_str()));
if (!lib_handle) {
cerr << "Cannot load library: " << TEXT(nameOfDllToLoad.c_str()) << endl;
}
#else
string nameOfLibToLoad("/opt/lib/libctest.so");
lib_handle = dlopen(nameOfLibToLoad.c_str(), RTLD_LAZY);
if (!lib_handle) {
cerr << "Cannot load library: " << dlerror() << endl;
}
#endif
кроссплатформенная загрузка шаренной библиотеки... может я чего то не понимаю в этой жизни, но... совершенно здесь лишний класс строки, который делает совершенно лишний вызов конструктора и добавляет совершенно лишние n-килобайт к размеру сборки...
ссыль: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
+171
#include <iostream>
template <int n>
struct Solution
{
static const int count = Solution<n / 10>::count + 1;
static const int sum = Solution<n / 10>::sum + n % 10;
static const int last = n % 10;
static const int first = Solution<n / 10>::first;
};
#define DECLARE_ONE_DIGIT_SOLUTION(n) template <>\
struct Solution<n>\
{\
static const int count = 1;\
static const int sum = n;\
static const int last = n;\
static const int first = n;\
};
DECLARE_ONE_DIGIT_SOLUTION(0)
DECLARE_ONE_DIGIT_SOLUTION(1)
DECLARE_ONE_DIGIT_SOLUTION(2)
DECLARE_ONE_DIGIT_SOLUTION(3)
DECLARE_ONE_DIGIT_SOLUTION(4)
DECLARE_ONE_DIGIT_SOLUTION(5)
DECLARE_ONE_DIGIT_SOLUTION(6)
DECLARE_ONE_DIGIT_SOLUTION(7)
DECLARE_ONE_DIGIT_SOLUTION(8)
DECLARE_ONE_DIGIT_SOLUTION(9)
int main()
{
const int number = 1024; // <-- то самое число a
std::cout << "Number of digits: " << Solution<number>::count << std::endl;
std::cout << "Sum: " << Solution<number>::sum << std::endl;
std::cout << "Last digit: " << Solution<number>::last << std::endl;
std::cout << "First digit: " << Solution<number>::first << std::endl;
return 0;
}
Это один из ответов к слезной просьбе какого-то школьника (студента) выполнить за него д/з на С++ в разделе development форума на ЛОРе. Такую программу нарочно хрен напишешь.
Само задание: «Дано натуральное число а (a≤100). Напишите программу, определяющую количество цифр в этом числе, сумму его цифр, выводящую на экран первую и последнюю цифру через два пробела».
+161
std::auto_ptr<ItemDesc> desc(new ItemDesc());
...
m_items.insert(desc->m_item->m_name, desc.release());
Да, я тоже говнокодер. А ведь предупреждали...
+157
struct Event
{
int priority;
bool operator<(Event e) const
{
return e.priority>priority;
}
virtual void operator() () = 0;
};
priority_queue<Event*, deque<Event*> > eventQueue;
template <typename T, void (T::*g)()>
struct TEvent : Event
{
T* parent;
virtual void operator() ()
{
(parent->*g)();
}
TEvent (T* _parent) : parent(_parent){}
};
struct Entity
{
int foo;
void AFunc()
{
cout<<foo;
}
void BFunc()
{
cout<<"Ololo";
}
typedef TEvent<Entity,&Entity::AFunc> someEvent;
Entity(int _foo): foo(_foo){}
void addEvent()
{
eventQueue.push(new someEvent(this));
}
};
int main()
{
Entity foo(10);
foo.addEvent();
(*eventQueue.top())();
return 0;
}
Один из самых сложных и неочевидных способов вывести в консоль число 10.
(Этот код - проверка, будет ли работать прототип велосипедного делегата)
+169
if (s<10)
{
s++;
}
if (s==10)
{
ss++; s=0;
}
if (ss==6 && s==0)
{
m++; ss=0; s=0;
}
if (m==10)
{
mm++; m=0; ss=0; s=0;
}
if (mm==6 && m==0)
{
h++; mm=0; m=0; ss=0; s=0;
}
if (h==10)
{
hh++; h=0; mm=0; m=0; ss=0; s=0;
}
if (hh==2 && s==0)
{
+146
void CDAMN::ControlDAMNAmount(DWORD newValue)
{
if(newValue != 0)
controlDAMNAmount = newValue;
}
DWORD CDAMN::ControlDAMNAmount()
{
return controlDAMNAmount;
}
Автор тот же
Две функции с одним именем. Одна изменяет внутреннее поле (член класса)- другая возвращает его значение. Использовать приставки get_ и set_ недосуг как-то. Да и называть внутренние переменные класса так, чтобы было понятно, что они не глобальные (с приставкой “m_”) тоже облом. Хайтек-шмайтек…
+165
class cSG5DataException ... {
cSG5DataException(CTstatus Status, CTsymbol Error,
CTsymbol SubError, std::string Description, ...)
{
/* форматирование сообщения */
}
/* виртуальный деструктор наличиствует */
};
class cExcKVSDuplicateKey : public cSG5DataException {
/* пусто */
};
/* код */
throw (cExcKVSDuplicateKey*) new cSG5DataException( CT_statusFail,
CT_errorObjectExists,
CT_errorObjectExists,
"cKVSet_STL_map::insert( CTint k, Value& v ), %d is already in the map",k);
вот так хитро народ обходит проблему писания конструкторов. темплейт фактори функцию сделать не догадались. но С-style конверсию типов - пожалуйста. мне честно говоря и сложно то себе представить что это как-то работать может. смена типа поинтера то на тип объекта не влияет.
+175
port.put(0x64, 0xEE);
for(register int r=0;r<0xffff;++r);
port.get(0x64);
port - объект для обращения к портам ввода\вывода компьютера.
for - задержка между обращениями к портам (Оптимизатор С++ её конечно же убирает в релизе программы).
+162
template<const bool Value>
const bool BoolToFunc(void) const
{
return Value;
};