- 1
- 2
- 3
- 4
- 5
- 6
for(i = 0; i < strlen(line); i++)
{
...
doSomethingWith(line);
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+31
for(i = 0; i < strlen(line); i++)
{
...
doSomethingWith(line);
...
}
Пишет на С++, так как в нем (цитирую) больше возможностей, но std::string он не использует по причине (цитирую) его несовместимости с си компиляторами.
Автор намекнул мне, что я не умею в многопоточность и что этот код лучше любого другого подходит для исполнения в многопоточной среде на тот случай, если переменная line bump изменится ("англици́зм" цитирую дословно, видимо вставленный для понтов и переводимое как наречие внезапно).
Имеет ли смысл доказывать, что он не прав, если я с ним не работаю?
+12
template <class ToPtr,class From>
ToPtr DynamicCast (From f)
{
// static check if *ToPtr is derived from f
(void)sizeof (static_cast<From> ((ToPtr)NULL));
// lazy precalculation
static bool castable = dynamic_cast<ToPtr> (f)!=NULL;
static int offset =
int ((char *)dynamic_cast<ToPtr> (f)-(char *)f);
return castable? (ToPtr)((char *)f+offset) : NULL;
}
// usage: TBase *ptr1 = ...; TDerived *ptr2 = DynamicCast<TDerived *> (ptr1);
Performance oriented dynamic_cast
+10
public ref class Form1 : public System::Windows::Forms::Form
{
private: char * StrToCharArray ( System::String ^ inStr )
{
pin_ptr<const wchar_t> wch_basename = PtrToStringChars( inStr );
size_t convertedChars = 0; size_t sizeInBytes = ((inStr->Length + 1) * 2);
char * ch_basename = (char *)malloc(sizeInBytes);
wcstombs_s(&convertedChars, ch_basename, sizeInBytes, wch_basename, sizeInBytes);
return ch_basename;
}
}
C++/CLI
+16
#define Throw(exc, msg) do { \
std::stringstream exc_str; \
exc_str << __FILE__ << ":" << __LINE__ \
<< ": " << __func__ << "(): " << msg; \
throw exc(exc_str.str()); \
} while(0)
Throw(std::runtime_error, "test");
terminate called after throwing an instance of 'std::runtime_error'
what(): main.cpp:22: main(): Error
Как вам?
+14
template<typename U>
shared_ptr(const shared_ptr<U> & ptr) throw()
: m_value(0)
, m_ref_count(0)
{
m_value = static_cast<T *>(ptr.get());
if(m_value)
{
m_ref_count = reinterpret_cast<const shared_ptr &>(ptr).m_ref_count;
++*m_ref_count;
}
}
Выражаясь метафорично, я работаю на велосипедном заводе.
+18
word mofs[]={0,
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30
// ,31+28+31+30+31+30+31+31+30+31+30+31
};
"Класс для работы с датами" взятый отсюда: http://yun.complife.ru/soft.htm
+8
void Cluster::CloseConnection()
{
m_Connection->close();
if (!m_Connection->IsOK())
throw ConnectionError(m_Connection->LastError());
}
void ClusterGroup::RemoveCluster(int iIndex)
{
Cluster *pSubCluster = m_SubClusters->At[i];
pSubCluster->CloseConnection();
delete pSubCluster;
m_SubClusters->SetAt(i, NULL);
}
И потекло...
+35
#if defined(_WIN32) || defined(_WIN64)
ofstream outfile("help.txt");
outfile << message << endl;
system("notepad.exe help.txt");
#else
cout << message ;
#endif
Зачем бороться с юникодом в консоли, когда есть блокнот?
+23
#ifndef SAFE_RELEASE
#define SAFE_RELEASE(x) \
if(x != NULL) \
{ \
x->Release(); \
x = NULL; \
}
#endif
#define SAFE_DELETE(a) if( (a) != NULL ) delete (a); (a) = NULL;
#ifndef SAFE_ARRAY_DELETE
#define SAFE_ARRAY_DELETE(x) \
if(x != NULL) \
{ \
delete[] x; \
x = NULL; \
}
#endif
#define SAFE_FREE( p ) if( p ) { free( p ) ; p=NULL ; }
Я вот все никак не могу забыть старый код из доков макрософт по COM, а также из книги Андре Ла Мота.
Два макроса до сих пор висят среди доков на сайте мс (по коду догадаетесь какие):
http://msdn.microsoft.com/ru-RU/library/windows/desktop/dd743946(v=vs.85).aspx
+14
std::set_unexpected( [] () {} );
Студия достала и не позволяла обрабатывать исключения, а они нужны были для демонстрации работы, в итоге навесил такой костыль и включил SEH исключения в параметрах компиляции.