Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/294: Рейтинг темы: голосов - 294, средняя оценка - 4.84
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2

Может кто нибут обяснит что такое try, catch(...)?

01.05.2011, 19:14. Показов 55759. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер форум

Может кто нит обияснит что такое try, catch(...)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2011, 19:14
Ответы с готовыми решениями:

Может кто знает что такое
Проблема такая! Комп уже устарел, решили с отцом купить по частям всё новое! Взяли мать Asus LGA1151 H110M-R/C/SI H110 2xDDR4-2133 PCI-Ex16...

Кто может объяснить что такое CLR?
Что вообще делает CLR? читала но как то не особо поняла:-|

кто может поведать что такое паскаль
кто может поведать что такое паскаль

28
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.05.2011, 20:13
Это блок при помощи, которого отлавливаются исключения в программе.

Примеры писать?

Добавлено через 25 минут
Цитата Сообщение от Sasha Посмотреть сообщение
отлавливаются исключения
т.е ошибки
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
01.05.2011, 20:17
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Programmer. Посмотреть сообщение
Добрый вечер форум

Может кто нит обияснит что такое try, catch(...)
Принципы обработки исключений
В С++ исключение — это объект. Хотя обычно говорят об исключительной ситуации в программе, такая точка зрения мало что дает, так как с ситуацией сделать ничего нельзя. Поэтому в С++ при возникновении исключительной ситуации программа должна генерировать объект-исключение. Собственно, сама генерация объекта-исключения и создает исключительную ситуацию. Такой подход очень удобен, так как с объектами, в отличие от ситуаций, мы можем много чего делать. Например, объект-исключение можно объявить как обычную переменную, передать его как параметр любым из возможных способов или возвратить в качестве результата. Можно объявлять массивы исключений или включать объекты-исключения в качестве полей в другие классы. В дальнейшем мы будем использовать термин «исключение», понимая под этим объект-исключение.
Общая схема обработки исключений такова: в одной части программы, где обнаружена аварийная ситуация, исключение порождается; другая часть программы контролирует возникновение исключения, перехватывает и обрабатывает его. В С++ есть три зарезервированных слова: try (контролировать), catch (перехватывать), throw (порождать), — которые и используются для организации процесса обработки исключений.
Генерация исключений
Генерируется исключение оператором throw (см. п. 15.1 в [1]), который имеет следующий синтаксис
throw выражение_генерации_исключения;
Выражение генерации исключения на практике означает либо константу, либо переменную некоторого типа. Тип объекта-исключения может быть любым, как встроенным, так и определяемым программистом. Например:
C++
1
2
3
4
throw 7;
throw "Ошибка: деление на ноль!";
throw Message[i];
throw M_PI;
В первом случае объект-исключение — это целая константа, которая может быть условным номером-кодом ошибки. В общем случае этот код ошибки может вычисляться, например:
C++
1
throw 3*v-i;
Выражение, конечно, может быть не только целочисленным.
Второй вариант — это символьная константа, которая фактически является сообщением об ошибке. Все сообщения об ошибках могут быть записаны в массиве, например:
C++
1
string Message[326];
Тогда в третьем варианте объект-исключение тоже представляет собой строку — сообщение об ошибке. В последнем примере в качестве объекта используется дробная константа — число *.
Программист может и сам определить собственный тип объекта-исключения, объявив новый класс, например:
C++
1
2
3
4
class NegativeArgument{};
NegativeArgument exeption;
if (x>0) double t = x/sqrt(x);
else throw exeption;
Пустые классы неожиданно пригодились! Однако объявлять переменную совсем не обязательно, можно обойтись и без этого, например:
C++
1
throw NegativeArgument();
Здесь в качестве выражения генерации исключения мы использовали явный вызов конструктора без аргументов, и это наиболее распространенная форма генерации исключения.
Объект-исключение может быть и динамическим, например:
C++
1
throw new NegativeArgument();
Однако в этом случае возникает вопрос об уничтожении объекта-исключения и возврате памяти — неизвестно, в каком месте программы это можно сделать. Лучше не создавать себе проблем и не использовать указатели в качестве параметров блоков catch.
Перехват и обработка исключений
Сгенерировать исключение — это только полдела. Как уже отмечалось, исключение надо перехватить и обработать. Проверка возникновения исключения делается с помощью оператора try, с которым неразрывно связаны одна или несколько блоков обработки исключений — catch. Оператор try объявляет в любом месте программы контролируемый блок, который имеет следующий вид:
C++
1
try { /* контролируемый блок */ }
Контролируемый блок, помимо функции контроля, обладает функциями обычного блока: все переменные, объявленные внутри него, являются локальными в этом блоке и не видны вне его.
После блока try обязательно прописывается один или несколько блоков catch, которые обычно называют обработчиками исключений, или секциями-ловушками. Форма записи секции-ловушки следующая:
C++
1
catch (спецификация_параметра_исключения) { /* блок обработки */}
Спецификация параметра исключения может иметь следующие три формы:
(тип имя)
(тип)
(...)
Тип должен быть одним из допустимых типов исключений — либо встроенным, либо определенным программистом . Первый вариант спецификации означает, что объект-исключение передается в блок обработки, чтобы там его как-то использовать, например, для вывода информации в сообщении об ошибке.
ВНИМАНИЕ
При выполнении оператора throw создается временный объект-исключение, который и передается в секцию-ловушку (см. п.п. 15.1/3 в [1]).
При этом объект-исключение может передаваться в секцию-ловушку любым способом: по значению, по ссылке или по указателю, например:
C++
1
2
3
4
catch (TException e)             // по значению
catch (TException& e)            // по ссылке
catch (const TException& e)      // по константной ссылке
catch (TException *e)            // по по указателю
Однако в отличие от параметров функций, никаких преобразований типов по умолчанию не производится . Это означает, что если в программе написан следующий заголовок обработчика, то попадают в соответствующую ловушку только те исключения, тип которых совпадает с double:
C++
1
catch (double e)                 // по значению
Еще пример:
C++
1
throw 1
Этот оператор генерирует исключение целого типа, поэтому будет обрабатываться секцией-ловушкой с заголовком, в котором прописан целый тип исключения, например, одним из следующих способов:
C++
1
2
catch (int e)                    // по значению
catch (int)                      // без передачи информации в секцию-ловушку
Это легко проверить, выполнив следующую простую тестовую программу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{    try { throw 1;                           // генерация исключения
        }
    catch(unsigned int)
        { cout << "unsigned integer" << endl;
        }
    catch(int)                                // перехватывается здесь
        { cout << "integer" << endl;
        }
    catch(double)
        { cout << "double" << endl;
        }
    return 0;
}
На экране появится слово integer, так как константа 1 по умолчанию имеет тип int.
Первые две формы из приведенных спецификаций параметра исключения предназначены для обработки конкретного типа исключений. Если же на месте спецификации исключения написано многоточие (как в функциях с переменным числом параметров), то такой обработчик перехватывает все исключения.
Работа конструкции try...catch напоминает работу оператора switch. Секции-ловушки похожи на альтернативы case, а блок catch с многоточием соответствует альтернативе default оператора-переключателя. Если в блоке try возникает исключение, то начинается сравнение типа сгенерированного исключения и типов параметров в секциях-ловушках. Выполняется тот блок catch, тип параметра которого совпал с типом исключения. Если такого типа не найдено, выполняется блок catch с многоточием. Если же такого блока в текущем списке обработчиков не обнаруживается, то ищется другой список обработчиков в вызывающей функции. Этот поиск продолжается вплоть до функции main(). Если же и там не обнаружится нужного блока catch, то вызывается стандартная функция завершения terminate() (см. п.п. 15.5.1 в [1]), которая вызывает функцию abort().
Таким образом, очень важен порядок записи секций-ловушек после контролируемого блока. Если в качестве первого обработчика после блока try задан блок catch с параметром-многоточием, то такой обработчик будет обрабатывать все возникающие исключения — до остальных секций-ловушек дело просто не дойдет. Поэтому усвойте следующее простое правило: блок catch с параметром-многоточием всегда должен быть последним. Секция-ловушка с многоточием — это крайняя мера: если уж мы в нее попали, то в программе произошло что-то совсем непредусмотренное. Поэтому в такой секции обычно выводят сообщение о непредвиденном исключении и завершают работу программы.
24
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
01.05.2011, 23:15  [ТС]
Sasha,
Примеры писать?
Если не лен!

ValeryLaptev,
Спасибо большое!
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.05.2011, 23:35
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
float A;
 try
   {
     A = StrToFloat(Edit1->Text) / StrToFloat(Edit2->Text);
   }
  catch(EConvertError&)
  {
    Application->MessageBox("Вы ввели ошибочное число","Повторите ввод",MB_OK);
  }
  catch(EZeroDivide&)
 {
  Application->MessageBox("Вы ввели нуль","Повторите ввод",MB_OK);
 }
  catch(EOverflow&)
 {
  Application->MessageBox("Переполнение","Ошибка вычисления",MB_OK);
 if(StrToFloat(Edit1->Text) * StrToFloat(Edit2->Text)>=0) 
       A = 3.4E38;
 else
       A = -3.4E38;
}
9
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
02.05.2011, 01:23  [ТС]
Sasha, Cпасибо большое
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2011, 03:59
Саш, а откуда брать эти самые
EConvertError
EZeroDivide
EOverflow
?
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
02.05.2011, 12:47  [ТС]
LK,

Да, я по позже пересмотриваль код и я тоже не понял откуда взились
Цитата Сообщение от LK Посмотреть сообщение
EConvertError
EZeroDivide
EOverflow
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.05.2011, 16:25
Цитата Сообщение от LK Посмотреть сообщение
Саш, а откуда брать эти самые ?
Я вообщето выписывал это всё из Архангельского, но можете прочитать и здесь

1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
02.05.2011, 16:32
Цитата Сообщение от LK Посмотреть сообщение
Саш, а откуда брать эти самые ?
Можно сделать самим. Причем, либо просто объявив классы, либо унаследовав от стандартного исключения.

Стандартные исключения
В языке С++ в составе стандартной библиотеки реализован ряд стандартных исключений, которые организованы в иерархию классов (см. п.п. 18.6 и 19.1 в [1]). Иерархическое представление часто бывает очень полезно, так как позволяет разбить задачу на части, повысить понимание и упростить реализацию. В этом случае задействуется третий механизм объектно-ориентированного программирования — наследование. Подробности наследования мы изучим в следующей главе, а здесь рассмотрим простейший случай организации исключений.
При реализации класса TArray с генерацией исключений (см. листинг 7.8) были определены три независимых типа исключений: bad_Range, bad_Index и bad_Size. Но все они имеют нечто общее — эти исключения генерируются в классе TArray. Хотелось бы как-то обозначить этот факт явным образом. Это можно сделать, используя механизм наследования: мы объявим класс TArray_exception, а остальные классы объявим его наследниками:
C++
1
2
3
4
class TArray_exception {};                       // базовый класс
class  bad_Range: public TArray_exception {};    // класс-потомок
class  bad_Index: public TArray_exception {};    // класс-потомок
class  bad_Size : public TArray_exception {};    // класс-потомок
Мы объявили общий тип исключений, связанных с классом TArray, а затем определили ряд более специализированных подвидов типа TArray_exception. Тем самым мы получили возможность все исключения, связанные с классом TArray, перехватывать и обрабатывать с помощью единственной секции-ловушки с типом параметра TArray_exception. Никто, однако, не запрещает использовать и специализированные исключения. Естественно, если нам потребуется задать несколько секций-ловушек для обработки исключений класса TArray, то блок с типом исключения TArray_exception должен стоять последним, так как это — исключение общего вида.
Несколько более сложную структуру (см. п. 19.1 в [1]) имеет иерархия стандартных исключений (листинг 7.14).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Листинг 7.14. Иерархия стандартных исключений
class exception {//... };
  class logic_error : public exception {//... };
     class domain_error : public logic_error {//... };
     class invalid_argument : public logic_error {//... };
     class length_error : public logic_error {//... };
     class out_of_range : public logic_error {//... };
  class runtime_error : public exception {//... };
     class range_error : public runtime_error {//... };
     class overflow_error : public runtime_error {
     class underflow_error : public runtime_error {//... };
  class bad_alloc : public exception {//... };
  class bad_cast : public exception {//... };
  class bad_tipeid : public exception {//... };
  class bad_exception : public exception {//... };
  class ios_base::failure : public exception {//... };
Эта иерархия служит основой для создания собственных исключений и иерархий исключений. Мы можем определять собственные исключения, унаследовав их от класса exception. Для работы со стандартными исключениями в программе надо прописать оператор
C++
1
#include <stdexcept>
ПРИМЕЧАНИЕ
Так как обработка исключений во время выполнения программы сопровождается расходами времени и памяти, в интегрированной среде, как правило, необходимо включить соответствующий режим, разрешающий обработку исключений.

Названия производных классов logic_error и runtime_error в общем-то условны. Предполагается, что исключения первого типа сигнализируют об ошибках в логике программы, например, о невыполнении некоторого условия. Категория runtime_error — это ошибки, которые возникают в результате непредвиденных обстоятельств при выполнении программы, например, переполнение при операциях с дробными числами.
Эти исключения программа должна генерировать сама оператором throw. А вот следующие 5 стандартных исключений генерируют различные механизмы С++.
ПРИМЕЧАНИЕ
Мы тоже можем использовать эти исключения в операторе throw явным образом, однако так делать не рекомендуется во избежание путаницы.

Как уже было сказано, исключение bad_alloc (см. п.п. 18.4.2 в [1]) генерирует операция new (или new[]), если запрос на память не может быть удовлетворен. Исключения bad_cast (см. п.п. 18.5.2 в [1]) и bad_typeid (см. п.п. 18.5.3 в [1]) генерируются механизмом RTTI (Run-Time Type Identification — динамическая идентификация типов). Естественно, исключение ios_base::failure (см. п.п. 27.4.2.1.1 в [1]) генерируется системой ввода-вывода. Исключение bad_exception (см. п.п. 18.6.2.1 в [1]) играет важную роль при нарушении функцией спецификации исключения (см. далее).
Класс exception определен в стандартной библиотеке (см. п.п. 18.6/1 в [1]) так, как показано в листинге 7.15.
C++
1
2
3
4
5
6
7
8
9
Листинг 7.15. Стандартный класс исключения
class exception {
   public:
     exception () throw();
     exception (const exception&) throw();
     exception& operator= (const exception&) throw();
     virtual ~exception () throw();
     virtual const char* what () const throw();
 };
Что означает слово virtual, мы разберемся в главе 9, а сейчас обратите внимание на то, что все конструкторы и методы имеют спецификацию, запрещающую генерацию исключений. Это и понятно — если механизм исключений сам будет генерировать исключения, хорошего ждать не придется — программа закончится аварийно.
Как видим, стандартные исключения включают функцию-метод what(), которая, очевидно, выдает строку-сообщение об ошибке. Использование стандартных исключений продемонстрируем с помощью немного модифицированного примера из справочника интегрированной среды C++ Builder 6 (листинг 7.16).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Листинг 7.16. Использование метода what()
#include <stdexcept>
#include <iostream>
#include <string>
using namespace std;
void f()                     // функция, генерирующая исключение runtime
{ throw runtime_error("Ошибка runtime!"); }
int main ()
{ string s;
  try {                      // контролируем метод replace класса string
       s.replace(100,1,1,'c'); 
      }
  catch (const exception& e)
  { cout << "Получили исключение: " << e.what() << endl; }
  try { f();                 // контролируем нашу функцию
      }
  catch (const exception& e)
  { cout << "Получили исключение: " << e.what() << endl; }
  return 0;
}
Эта программа выведет на экран две строки:
Получили исключение: basic_string
Получили исключение: Ошибка runtime
В этом простом примере мы видим два варианта генерации исключений: явный — в нашей функции, и неявный — в стандартном методе replace(). Первая строка — это результат работы первого обработчика при неправильном использовании метода replace() строки s, вторая — это уже результат явной генерации исключения типа runtime_error в функции f().
Обратите внимание на одну замечательную особенность блоков catch: в качестве типа формального параметра используется базовый класс, тогда как при выполнении в обработчик попадает объект-исключение совсем другого типа — наследника от базового. Это очень важное свойство наследования — принцип подстановки — мы рассмотрим при изучении наследования. Кроме того, исключение передается в секцию-ловушку по ссылке. Почему это важно — тоже разберемся при изучении наследования.
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
02.05.2011, 16:34  [ТС]
ValeryLaptev,
Sasha,
Cпасибо немного разобралсья!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2011, 23:25
В догонку (скачать в архиве) Исключения в C++ Builder
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
03.05.2011, 01:39  [ТС]
LK,
Чтоб я без вас сделал бы, но страница выдаёт ощибку 404
Сможете как то копировать или?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.05.2011, 02:49
постоянно забываю - ленивый делает дважды , держи:
Вложения
Тип файла: zip Exceptions.zip (70.1 Кб, 235 просмотров)
2
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
04.05.2011, 02:30  [ТС]
LK,
Спасибо за помощ!
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
02.12.2012, 14:54
Вот этот код на исключение дает ошибку а почему я так и не понял

C++
1
2
3
4
5
6
try {
Memo1->Lines->LoadFromFile("1.txt");
}
catch(...) {
ShowMessage("Файл не найден");
}
3
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
02.12.2012, 17:17
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
а почему я так и не понял
Файла такого нет в текущем каталоге? Вообще ПХТ является проверка наличия файла перед его открытием, например функцией FileExists()
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
02.12.2012, 22:00
Цитата Сообщение от mimicria Посмотреть сообщение
Файла такого нет в текущем каталоге? Вообще ПХТ является проверка наличия файла перед его открытием, например функцией FileExists()
FileExists() эта функция работает нормально.
А в том примере че я написал если файл в каталоге есть то откроет нормально,но если нету сразу ошибку выбьет!
Тут наверн заместо (...) нужно че-то другое прописывать.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.12.2012, 22:27
C++
1
2
3
4
5
6
7
8
try 
{
   Memo1->Lines->LoadFromFile("1.txt");
}
catch(Exception &E)
{
   ShowMessage("Файл не найден"+E.Message);
}
А вообще нужно конкретный класс исключение написать которое подымается вместо Exception
2
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
04.12.2012, 18:42
Странно и это ошибку бьет..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2012, 18:42
Помогаю со студенческими работами здесь

Кто может доходчиво объяснить, что такое Delegate?
Только не отсылайте меня пожалуйста на англоязычные сайты. Если это возможно - то вкратце своими словами.

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы
Заранее спасибо.

Что такое аргумент e у оператора catch?
catch(e)

Кто обяснит как правильно строить циклы ставлю спасибо!
Обидно мне читаю читаю а не понимаю циклы и не умею решать с ними задачи,прям серьездно обидно,обясните как их строить ветвления эти,как...

Как такое может быть и что это такое?
в маленьком превью одна картинка, открываешь совершенно другая (какая и должна быть) с чем это связано?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru