Я считал эту часть макроса (C код) и был смущен в декодировании его для знания то, что это определяет. Что это определяет?
#define sram (*((unsigned char (*)[1]) 0))
- AD
Прежде чем приступать к разработке языков программирования, вам нужно будет многое узнать о них. Я рекомендую Языки программирования: применение и интерпретация Шрирама Кришнамуртхи .
-121--1527104-Ну, я еще не видел ответа на «Что они физически». Так что я попробую.
Процессы и потоки не являются никакими физическими. Они являются особенностью операционной системы. Обычно любой физический компонент компьютера не знает о них. ЦП обрабатывает только последовательный поток кодов операций. Эти коды операций могут принадлежать потоку. Затем ОС использует ловушки и прерывает восстановление управления, решает, какой код следует выполнить, и переключается на другой поток.
-121--1039958- Я думаю, что sram
означает «запуск ОЗУ».
unsigned char[1]
Массив 1 размера неподписанных символов.
unsigned char(*)[1]
Указатель на массив размера 1 неподписанных символов.
(unsigned char (*)[1]) 0
Приведение 0 к указателю на массив размера 1 неподписанных символов.
*((unsigned char (*)[1]) 0)
Считывайте часть памяти в расположении 0 и интерпретируйте результат как массив 1 размера неподписанных символов.
(*((unsigned char (*)[1]) 0))
Просто чтобы избежать 1 + 5 * 8 + 1 = 42 .
#define sram (*((unsigned char (*)[1]) 0))
Определите переменную sram
в памяти, начиная с местоположения 0, и интерпретируйте результат как массив 1 размера неподписанных символов.
Почему бы просто не заменить regex целиком?
$(".myFieldsetClass label:contains('Some Label ')")
.each(function() {
$(this).html($(this).html().replace(/Some Label ./, "Some Label"));
});
-121--2818470- Если вам нужны только те исключения, о которых вы знаете при написании кода, то вы можете написать обработчик, который сможет справиться со всеми "известными" исключениями. Хитрость заключается в том, чтобы вернуть исключение, которое вы поймали с catch (...)
, а затем поймать различные известные исключения...
Итак, что-то вроде:
try
{
...
}
catch(...)
{
if (!LogKnownException())
{
cerr << "unknown exception" << endl;
}
}
где LogKnureException ()
выглядит примерно так:
bool LogKnownException()
{
try
{
throw;
}
catch (const CMyException1 &e)
{
cerr << "caught a CMyException: " << e << endl;
return true;
}
catch (const Blah &e)
{
...
}
... etc
return false;
}
-121--4349286- Я думаю, что возвращает базовый адрес (0) памяти (ОЗУ):)
Он определяет sram как указатель на память, начиная с нуля. Вы можете получить доступ к памяти через указатель, например sram [0] - это адрес ноль, sram [1] - это данные по адресу один, и т. д.
В частности, он приводит к приведению 0 как указателя на массив беззнаковых символов и косвенно проходит через него (оставляя массив беззнаковых символ).
Аналогичный результат может быть получен с помощью
#define sram ((unsigned char*)0)
. Он также полностью не определен в стандарте C, но это не мешает людям использовать его и заставлять ангелов вылетать из их пупка.