Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Привет из 2025! 2-4 Гб - это что-то совсем по-бюджетному. 6 Гб - уже можно пользоваться, но приложения постоянно выгружаются из памяти, теряют своё состояние.
#define PI 3,1415926535897932384626433832795x = PI/2;
#define PI 3,1415926535897932384626433832795x = PI/2result = someFunction();
if (result == RESULT_ERROR){
resultCode = getLastError();
switch (resultCode){
// Какой-то код, который обрабатывает ошибки
RESULT_ERROR_FILE_NOT_FOUND: someAnotherFunction(); break;
default: throwError();
}
cleanup();
}result = f(smth);
if( result == err1 ) {
do_cleanup();
return err1023;
}
do_smth();
obj = create(smth);
obj.make_smth();
push ebp; mov ebp,esp в прологе функции). И это никуда при оптимизации не выкинешь. Код, который не выкидывает исключений, часто запросто без этого обходится (у gcc даже опция на этот счёт есть -fomit-frame-pointer).#include iostream
void main()Также я буду говорить только о прикладном программировании под десктоп-операционки (в кластерах, микропроцессорах и системном программировании тенденции могут отличаться).
Напомню, это поддерживается в основных, стабильных (не альфа\бета) ветках всех основных компиляторов.Расскажите это Apple, которые до сих пор поставляют gcc 4.2.1.
Напомню, это поддерживается в основных, стабильных (не альфа\бета) ветках всех основных компиляторов.
% port info gcc46
gcc46 @4.6-20110325 (lang)
Variants: gfortran, java, universal
Description: The GNU compiler collection, including front ends for C, C++, Objective-C and Objective-C++. This is a prerelease BETA
version and does not have all available language front ends enabled.vector<pair<string,int>> v = { {"one",1} ,{"two",2},{"three",3} };
for(auto i : v ) { cout<<i.first<<"="<<i.second<<endl; };
передавать сущности в функции и методы как по ссылке так и по значению — очень мощный механизм и не стоит его использовать однобоко
class A {
void f();
void f() const;
};
Type foo(A);Type foo(A); — переменная.Нет, это forward declaration функции, которая принимает параметр типа A и возвращает объект типа Type.
typedef int Type;
typedef short A;
Type foo(A); // forward declaration функции foo
// позже можно сделать
foo(2);
struct Type
{
Type(int) {}
void bar() {}
};
const int A = 1;
Type foo(A); // создание экземпляра типа Type
// позже можно сделать
foo.bar();
int count=std::count_if(
ints.begin(),
ints.end(),
boost::bind(
std::logical_and(),
boost::bind(std::greater(), _1, 5),
boost::bind(std::less_equal(), _1, 10)));
Вместо "наскального", уж простите меня, старпера, C-шного "for+if" в три строчки?stltest.cpp: In function ‘int main()’:
stltest.cpp:9: error: no matching function for call to ‘std::vector<int, std::allocator >::insert(int)’
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/vector.tcc:93: note: candidates are: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = int, _Alloc = std::allocator]
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../include/c++/4.0.3/bits/stl_vector.h:657: note: void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = int, _Alloc = std::allocator]
request.
try_(parse).
catch_( boost::bind(catchFailed, _1, a_authorizeDate.second, a_authorizeDate.first) ).
try_( boost::bind( &CMdcServerConnection::setAuthorized, this_ptr, true ) ).
dtry_( boost::bind(&CMdcServerConnection::selectCurrentCleintId, this_ptr) ).
result();
Чем-то проще или лучше, чем
request.parse();
CMdcServerConnection::setAuthorized(true);
CMdcServerConnection::selectCurrentCleintId();
return request.result();
, обернутое в try-catch?sequence::deferred_result filterModelWithCastedAttr(const CTaskModel& a_model, const QString& a_attr, const ItemId& a_id)
{
return NEW_STARTED_SEQUENCE.
dtry_( boost::bind(&CTaskModel::init, a_model) ).
dtry_( boost::bind(&castToByModelAttr, a_id, a_model, a_attr) ).
try_( boost::bind(buildFilteredModel, a_model, a_attr, _1) ).
result();
}
ints.Count(i => 5 < i && i <= 10);
$ grep -Re 'throw.*;' * | wc -l
187
$ grep -Re 'catch (' * | wc -l
26
$ du -s ./
69608 ./
Fatal error: Uncaught exception 'Exception' with message 'DateTimeZone::__construct() [<a href='datetimezone.--construct'>datetimezone.--construct</a>]: Unknown or bad timezone ()' in /usr/local/data/www/data-segodnya.ru/index.php:54 Stack trace: #0 /usr/local/data/www/data-segodnya.ru/index.php(54): DateTimeZone->__construct('') #1 {main} thrown in /usr/local/data/www/data-segodnya.ru/index.php on line 54
Очнитесь, на дворе XXI век