- 1
- 2
- 3
- 4
- 5
- 6
#define TRUE (1)
#define FALSE (0)
#define internal protected:
#define external public:
#define declareSuper(superClass) protected: typedef superClass super
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 223
+24
#define TRUE (1)
#define FALSE (0)
#define internal protected:
#define external public:
#define declareSuper(superClass) protected: typedef superClass super
Оттуда.
+132
#define LengthOfArrayInternal(a)(sizeof(a)/sizeof(a[0]))
#define is_array(x) _Generic((x), typeof((x)[0])[LengthOfArrayInternal(x)]:1, default: 0)
#define COMPILE_TIME_ASSERT(expr) char constraint[expr]
#define length_of_array(a) ({COMPILE_TIME_ASSERT(is_array(a)); LengthOfArrayInternal(a)})
Определение длины массива. gcc и с11 only.
Говно как известно рождается в споре:
http://govnokod.ru/12108#comment160631
+21
extern struct BloodRainPersonage
{
} bloodRainPersonage, * pBloodRainPersonage;
Мне даже нечего сказать...
+15
for(int y=0; y<height; ++y)
{
for(int x=0; x<width; ++x)
b[y,x] = a[y,x];
}
+16
struct WideParams
{
WideParams(size_t CountParameters...):
Посоны, это бомба. Вот что я обнаружил в проекте.
+20
#include <iostream>
#include <functional>
using namespace std;
template<class TReceiver, class TResult>
struct TMessage
{
virtual const TResult sendTo(const TReceiver&) const = 0;
virtual const TResult sendTo(TReceiver&) const = 0;
virtual ~TMessage(void){}
};
template<class TReceiver, class T, class TResult=void>
struct TTypedMessage : public TMessage<TReceiver, TResult>
{
T _data;
explicit TTypedMessage(const T& data):_data(data)
{}
const TResult sendTo(const TReceiver& functor) const
{
return functor(_data);
}
const TResult sendTo(TReceiver& functor) const
{
return functor(_data);
}
};
class T1
{
typedef T1 TThis;
public:
void operator()(const int& i)const{cout <<"int"<< i<<endl;}
void operator()(const double& i)const{cout <<"double"<< i<<endl;}
void operator()(const std::reference_wrapper<double>& i)const{cout <<"double&"<< i.get()<<endl;}
template<class T>
void operator()(const T& i)const{cout << "UnknowenMesage"<<endl;}
};
class T2
{
typedef T2 TThis;
public:
void operator()(int i)const{cout <<"int"<< i<<endl;}
void operator()(double i)const{cout <<"doble"<< i<<endl;}
void operator()(std::reference_wrapper<double> i)const{cout <<"double&"<< i.get()<<endl;}
};
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(TReceiver& Receiver, TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(const TReceiver& Receiver, TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(TReceiver& Receiver, const TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(const TReceiver& Receiver, const TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
int main() {
T1 a;
T2 b;
sendMessage(a, 10);
sendMessage(a, 10.0);
double d=0;
sendMessage(a, std::ref(d));
sendMessage(b, 10);
sendMessage(b, 10.0);
sendMessage(b, std::ref(d));
sendMessage(a, string("kokoko"));
int aa=6;
sendMessage(a, aa);
return 0;
}
Найдено на просторах Интранета:
http://ideone.com/pMSA1p
В чем смысл? Так получается больше кода?
+17
#include <iostream>
template< class Val >struct SwithClass
{
SwithClass( const Val & v ):val(v){}
void operator() (){}
template < class E, class F, class ... Args > void operator() ( E e, F f, Args ... args )
{
if( e==val ) f();
else (*this)( args... );
}
private:
Val val;
};
template< class Val > SwithClass<Val> Swith( const Val& v ){ return SwithClass<Val>(v);}
int main()
{
int x = 8;
Swith( x )
(
1, [](){ std::cout <<"x=1" << std::endl; },
8, [](){ std::cout <<"x=8" << std::endl; }
);
return 0;
}
http://ideone.com/Xbj46U
+124
main =do
let b = 56
let b = b+1
print b
Зачем есть возможность задавать переменные с однаковыми именами, если их использовать ниже всё равно нельзя?
http://ideone.com/b1DGYF
+11
int a[4]={};
void f(void){}
void functionWithArrayParam(int (&a)[4])
{
a[3]=4;
}
void functionWithFunctionParam(void (*f)(void))
{
f();
};
int (&functionReturnArray(void))[4]
{
return a;
}
void (*arrayOfFunction[4])(void)={f,f,f,f};
void (*functionReturnFunction(void))(void)
{
return f;
};
int main() {
functionReturnArray()[3]=4;
functionWithArrayParam(a);
arrayOfFunction[3]();
functionWithFunctionParam(f);
functionReturnFunction()();
Батхертный путь C++
Просветление — состояние полной осознанности (выход за пределы дуального ума)... Это скачкообразное изменение восприятия окружающего мира, знаменующее собой переход к отличной от общепринятой форме мышления. Одновременно является началом открытия чакры «третьего глаза» и трамплином для глубоких изменений сознания. Как витальная форма, тяжело поддается ментальному описанию.
Батхертный путь C++ - путь, которым идут просветленные последователи Дао и Дзен С++, способные писать всё в одном выражении.
Доступность этого пути в C++ усиливает возможности C++ по созданию одного и того же кода самыми разнообразными и очень красивыми способами.
Следуя этому пути можно писать такой крутой код, что все товарищи из команды, работающие над кодом, над которым вы работаете вместе с ними, будут завидовать вам и бить вас за это при каждой встрече с разворота.
Этот принцип батхертного пути C++, лежащий в основе C++, помогает потратить дополнительные 1000% времени на разработку и поддержку C++ программ и получить за это дополнительные деньги. Поэтому C++ крайне выгоден!
Взглянем на малую часть основ этого пути при объявлении массивов и функций в C++:
Док-ва истинности пути к просветлению:
http://ideone.com/FCW4f
Итак, используя эти простые принципы нужно написать массив функций, возвращающих массив функций с параметром функция, принимающая массив функций, возвращающих функцию void (void)? typedef запрещён.
Останется только один! Истинный просветленный носитель разума и света!
Если вы знаете другие основы батхертного пути C++, то искренне прошу поделиться с нами вашими открытыми чакрами.
+134
stroka="Hello world!";
SubStringStartWith(Char, String)
{
return strchr(String, Char);
}
#define cl 'w'
main()
{
printf("In character literal \'%c\' %d bytes \n", cl, sizeof(cl));
printf("In string \"%s\" substring, that start with \'%c\' char is \'%s\'", stroka, cl, SubStringStartWith(cl, stroka));
return 0;
}
Оттуда же. Вот уж воистину говнокода-генераторы.
http://ideone.com/ICydFM