-
+148
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
void init()
{
letters.push_back("q");
letters.push_back("w");
letters.push_back("e");
letters.push_back("r");
letters.push_back("t");
letters.push_back("y");
letters.push_back("u");
letters.push_back("i");
letters.push_back("o");
letters.push_back("p");
letters.push_back("a");
letters.push_back("s");
letters.push_back("d");
letters.push_back("f");
letters.push_back("g");
letters.push_back("h");
letters.push_back("j");
letters.push_back("k");
letters.push_back("l");
letters.push_back("z");
letters.push_back("x");
letters.push_back("c");
letters.push_back("v");
letters.push_back("b");
letters.push_back("n");
letters.push_back("m");
letters.push_back("0");
letters.push_back("1");
letters.push_back("2");
letters.push_back("3");
letters.push_back("4");
letters.push_back("5");
letters.push_back("6");
letters.push_back("7");
letters.push_back("8");
letters.push_back("9");
}
пусть кому-то станет стыдно!
Lure Of Chaos,
24 Августа 2011
-
+161
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
int b;
int c();
template<class u, class v>
struct IsSameType
{
enum {r=0};
};
template<class u>
struct IsSameType<u,u>
{
enum {r=1};
};
//...
cout<<IsSameType<decltype(b),decltype(c())>::r<<endl;
cout<<IsSameType<decltype(b),decltype((b))>::r<<endl;
cout<<IsSameType<decltype(c()),decltype((b))>::r<<endl;
Сегодня увидим новую плюшку, что нам подарил новый стандарт С++0х.
1)Что на экране получим после выполнения данной программы?
2)Какие реально decltype возвращает типы в данных случаях?
Желательно ответить на оба вопроса, не компилируя. ^_^
Говногость,
21 Августа 2011
-
+146
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
// file.h
template <class T>
void gg (T i)
{
a = i;
}
// file1.cpp
#include "file.h"
static int a;
...
gg (a);
// file2.cpp
static int a;
...
gg (a);
// компилюем, линкуем - где напёрсточек^W^W в какое a стучится gg<int>?
>Мне тут некоторые граждане, на пару с некоторыми компиляторами и стандартом наперевес, пытались неубедительно доказывать, что-де такого не позволяет ODR, но пояснить свою мысль в математически непротиворечивой форме что-то не получилось. А между тем, не грех было бы взять пример с презренного пхп и заставить программизда все глобальные переменные, используемые в какой-либо функции, специфицировать в ней явным образом.
CPPGovno,
21 Августа 2011
-
+161
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
/// ...хде-то в начале огромной-преогромной функции...
#define ADD_GRAPH(gid,gmod) m_Registry[TGraphId(gid,gmod)] = new
/// ...хде-то по её середине...
#define ADD_MAP_WEAPON_OVERLAY(name_base,file_name)\
for (i=0; i<8; i++)\
{\
ADD_GRAPH(name_base _T("S"),i) (CLoadImage (\
file_name,\
TImageFX ()\
.SetColorReplacementFX (g_WeaponRecolor[i],2,0)\
));\
ADD_GRAPH(name_base _T("Q"),i) (CLoadImage (\
file_name,\
TImageFX ()\
.SetColorReplacementFX (g_WeaponRecolor[i],2,1)\
));\
}
#define ADD_MAP_WEAPON_OUTLINE(name_base,file_name)\
ADD_GRAPH(name_base _T("C"),0) (CLoadImage (\
file_name,\
TImageFX ()\
.SetColorReplacementFX (g_WeaponRecolor[0],2,2)\
));
ADD_MAP_WEAPON_OVERLAY (_T("CellSword"),_T("cell_weap_sword.png"));
ADD_MAP_WEAPON_OVERLAY (_T("CellAxe"),_T("cell_weap_axe.png"));
ADD_MAP_WEAPON_OVERLAY (_T("CellEshock"),_T("cell_weap_eshock.png"));
ADD_MAP_WEAPON_OVERLAY (_T("CellLance"),_T("cell_weap_lance.png"));
//... тут очень много в таком же духе ...
ADD_MAP_WEAPON_OUTLINE (_T("CellXbow"),_T("cell_weap_xbow.png"));
ADD_MAP_WEAPON_OUTLINE (_T("CellRifle"),_T("cell_weap_rifle.png"));
ADD_MAP_WEAPON_OUTLINE (_T("CellPistol"),_T("cell_weap_pistol.png"));
>Как бы оно выглядело без макросов, предоставляю гадать желающим.
Эстеты, разумеется, могут возопить: "Пошто было не вынести всё это в функцию?!" Пото, что функцию (а она потребовалась бы методом) пришлось бы описывать в хедере вместе с классом + имплементировать где-то снаружи текущей функции - весёлое занятие, нечего сказать. Это при том, что данный конкретный кусок кода на момент написания сильномутабелен в плане кол-ва требующихся параметров, и в перспективе мог вообще исчезнуть/слиться с другим. И таких кусков там ~100500. Возможностей, с которыми использование функций для подобного действа не является злобным буратинством, в моём местном С++ пока не наличенствует. А так все релевантные к специфике данного куска пиписьки сконцентрированы в одном месте, умещаются на 1 экран, и я спокоен за возвращение к нему через много времени.
CPPGovno,
21 Августа 2011
-
+162
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
#include<thread>
void f();
struct F {
void operator()();
};
int main()
{
std::thread t1{f}; // f() executes in separate thread
std::thread t2{F()}; // F()() executes in separate thread
}
Фигурные скобочки t1{f}; , используемые где только можно не перестают доставлять.
http://www2.research.att.com/~bs/C++0xFAQ.html
Говногость,
21 Августа 2011
-
+152
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
int main()
{
unsigned long l = 0xffc00000;
float f1,f2;
memcpy(&f1,&l,4);
memcpy(&f2,&l,4);
if(f1!=f2)printf("OH, SHI~!\n");
if(f1!=f1)printf("Facepalm!\n");
}
>Давно хотел провести эксперимент, вот только сейчас руки дошли.
Лог программы:
OH, SHI~!
Facepalm!
>Кто-нибудь знает причину подобного феномена?
Эксперемент не мой и я знаю причину такого поведения. Так что не плохой вопрос для собеседования к новичкам.
Говногость,
21 Августа 2011
-
+165
- 1
log::write(std::string() + "Opened \"" + filename + "\"");
История не моя, но приложу её к коду:
>Несколько лет назад у нас в проекте была такая строчка кода
Функция log::write() принимала форматную строку и набор аргументов, как printf.
Если имя файла содержит %, возможны неприятности, но такие файлы обычно не встречаются.
Я когда это увидел, очень резко прокоментировал способности и интелектуальный уровень того, кто так написал.
Как же так, если файл называется скажем "%s", программа грохнется с вероятностью близкой к 100%!
Как оказалось, этот кусок кода писала жена начальника.
Морские свинки и программистки, ага.
Кажется она сильно обиделась, меня уволили.
Говногость,
21 Августа 2011
-
+178
Так в последнем, полученном мною, для поддержки проекте произвели увеличение точности расчётов.
Говногость,
20 Августа 2011
-
+164
- 1
for(int i(0); i<5; i++)
Мне интересно, кто-нибудь так же пишет?
Говногость,
20 Августа 2011
-
+158
- 1
- 2
- 3
typedef int IntHack;
const intHack operator+(const intHack, const intHack)
{
Счастливой отладки. ^_^
Говногость,
20 Августа 2011