- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
/**
* @brief Макрос вызова функции изменения имени файла лога ПИМ
*
* @param FILE_NAME Имя файла лога
*
* @return Ничего
*/
#define LOG_PIM_SET_FILE_NAME(FILE_NAME) Soc::setLogFileName(FILE_NAME)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
/**
* @brief Макрос вызова функции изменения имени файла лога ПИМ
*
* @param FILE_NAME Имя файла лога
*
* @return Ничего
*/
#define LOG_PIM_SET_FILE_NAME(FILE_NAME) Soc::setLogFileName(FILE_NAME)
Самый нужный макрос в мире
0
#include <iostream>
using namespace std;
int main(){
int n = 60;
int a = 1 << n;
cout << a << endl;
n = 33;
a = 1 << n;
cout << a << endl;
unsigned m = 33;
unsigned b = 1u << m;
cout << b << endl;
// a = 1 << 32;
// cout << a << endl;
return 0;
}
Моар:
http://acm.math.spbu.ru/~kunyavskiy/cpp/sol02.cpp
+1
void g()
{
int sum;
auto rec = [&sum](int i) -> int
{
static int (*inner)(int&, int) = [](int& _sum, int i)->int
{
_sum += i;
return i>0 ? inner(_sum, i-1)*i : 1;
};
return inner(sum, i);
};
}
0
QMutableListIterator<AISObjectQML *> it(m_visibleList);
if (it.hasNext()) {
AISObjectQML *v = it.next();
if (v) { // здесь должен быть while, но, признаться, на это уже посрать
delete v;
}
}
m_visibleList.clear();
Есть люди, которые придумали концепцию итераторов для реализации generic алгоритмов. А есть люди, которые любят итераторы, но не любят generic алгоритмы. Ведь с ними код не внушает ужаса и рвотных позывов
+3
FOREACHINLIST(CBrushMip, bm_lnInBrush, penbr->GetBrush()->br_lhBrushMips, itbm)
{
CBrushMip &brmip=*itbm;
FOREACHINDYNAMICARRAY(itbm->bm_abscSectors, CBrushSector, itbsc)
{
CBrushSector &bsc=*itbsc;
FOREACHINSTATICARRAY(itbsc->bsc_abpoPolygons, CBrushPolygon, itbpo)
{
CBrushPolygon &bpo=*itbpo;
CheckOnePolygon(bsc, bpo);
}
}
}
И такое используется во всём SeriousEngine
+6
void MultMatrix(const GLfloat m1[16], const GLfloat m2[16], GLfloat result[16])
{
glLoadMatrixf(m1);
glMultMatrixf(m2);
glGetFloatv(GL_MODELVIEW_MATRIX, result);
}
+5
catch(...)
{
static int i = 0;
//if we enter this catch clause more than 1 time
//it is very likely that the RestartSystem() command
//did not succeed. If this is the case we just exit.
if(i>0)
exit(0);
else
MonitorT::GetInstance()->RestartSystem();
i++;
throw;
}
Навеяло...
+6
// implicit_cast< >
// I believe this was originally going to be in the C++ standard but
// was left out by accident. It's even milder than static_cast.
// I use it instead of static_cast<> to emphasize that I'm not doing
// anything nasty.
// Usage is identical to static_cast<>
template <class OutputClass, class InputClass>
inline OutputClass implicit_cast(InputClass input){
return input;
}
// horrible_cast< >
// This is truly evil. It completely subverts C++'s type system, allowing you
// to cast from any class to any other class. Technically, using a union
// to perform the cast is undefined behaviour (even in C). But we can see if
// it is OK by checking that the union is the same size as each of its members.
// horrible_cast<> should only be used for compiler-specific workarounds.
// Usage is identical to reinterpret_cast<>.
// This union is declared outside the horrible_cast because BCC 5.5.1
// can't inline a function with a nested class, and gives a warning.
template <class OutputClass, class InputClass>
union horrible_union{
OutputClass out;
InputClass in;
};
template <class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input){
horrible_union<OutputClass, InputClass> u;
// Cause a compile-time error if in, out and u are not the same size.
// If the compile fails here, it means the compiler has peculiar
// unions which would prevent the cast from working.
typedef int ERROR_CantUseHorrible_cast[sizeof(InputClass)==sizeof(u)
&& sizeof(InputClass)==sizeof(OutputClass) ? 1 : -1];
u.in = input;
return u.out;
}
Боль и страдание шаблонного программирования на С++98. Комменты и названия доставляют.
0
void checklock(globalMemManager *c)
{
if (!c->isThread) return;
_voidint idl=c->isThread();
#ifdef THREADDEBUG
assert(idl!=0);
#endif
while (idl==0 && c->lock());
if (idl!=0) while (true) {
while (c->lockId()!=idl) {
c->canLeave()=idl;
}
if (c->lock()) break;
}
c->lock()=true;
}
void unlock(globalMemManager *c)
{
if (!c->isThread) return;
c->lock()=false;
#ifdef THREADDEBUG
assert(c->lockId()==c->isThread());
#endif
c->canLeave()=0;
c->lockId()=0;
}
void globalMemManager::manage()
{
if (!lock()) if (lockId()==0 && canLeave()!=0) {
if (!lock()) lock()=true;
lockId()=canLeave();
}
}
Лучшее
−2
namespace bt {
#define MEMNULL \
_FORCEINLINE void* operator new(size_t) { return 0; } \
_FORCEINLINE void operator delete(void* ) { }
#define MEMDEFAULT(classname) \
_FORCEINLINE void* operator new(size_t size) { return extFunctions.CreateMem((unsigned int)size, 0); } \
_FORCEINLINE void operator delete(void* val) { extFunctions.DeleteMem(val, 0); }
#define MEMMANAGER(classname) \
_FORCEINLINE void* operator new(size_t size) { return bt::internalmemmanager.getNew((unsigned int)size); } \
_FORCEINLINE void operator delete(void* val) {bt::internalmemmanager.freeThis(val,sizeof(classname));}
#define MEMMANAGERCLEAN(classname) \
_FORCEINLINE void* operator new(size_t size) { return bt::internalmemmanager.getNewClean((unsigned int)size); } \
_FORCEINLINE void operator delete(void* val) { bt::internalmemmanager.freeThis(val,sizeof(classname)); }
class memManagerExport {
public:
MEMDEFAULT(memManagerExport)
BT_API memManagerExport(unsigned int size);
BT_API virtual ~memManagerExport();
/// destroy all memory segments and free list of free pointers
BT_API void _free();
/// return pointer to new object and create new segment of objects if need.
BT_API void *_addAlloc();
/// return pointer to free object
BT_API void *_getFree(unsigned int size);
/// add pointer to list of free
BT_API void _appendToFree(_voidint idat);
/// mark pointer to free ???
BT_API void _markFree(void* val);
/// return number object in segment
BT_API unsigned int _valid(unsigned int id);
/// return segment number
BT_API unsigned int _segid(unsigned int id);
/// prepare calculation for object size
BT_API void _calcsize(unsigned int size);
private:
enum States {
VALIDED = 0x011F1C01,
FREE = 0
};
unsigned int fisVal;
struct p_smemManager *fargs;
};
class memManager: public memManagerExport {
public:
MEMDEFAULT(memManager)
_FORCEINLINE memManager(unsigned int size):memManagerExport(size) {}
_FORCEINLINE ~memManager() {}
/// create memory for object
_FORCEINLINE void *getNew(unsigned int size) {return (void*)_getFree(size);}
/// delete memory for object
_FORCEINLINE void freeThis(void * val) {_appendToFree((_voidint)val);}
/// destroy all memory segments and free list of free
_FORCEINLINE void free() {_free();};
};
class globalMemManager {
public:
MEMDEFAULT(globalMemManager)
}
Давайте ржать