MiiNiPaa: используется, и gimple, и rtl, но они никуда не выводятся при нормальной работе и существуют только внутри исполняющегося компилятора. Результат же работы собственно компилятора c/c++ из gcc (cc1/cc1plus) -- это ассемблерный файл для целевой машины.
> В противном случае пришлось бы делать <кол-во яыков> × <кол-во платформ> трансляторов, вместо текущего <кол-во яыков> × <кол-во платформ>.
У вас слева и справа от "вместо" записано одинаковое значение.
Назар Мокринский: не имеет, потому что нет никаких гарантий о согласованности структуры файловой системы в разные моменты времени в течение проверки. Так что наверняка при этом найдутся ошибки, но нельзя будет сказать, вызваны ли они реальными повреждениями файловой системы, или штатной записью на диск, произошедшей в процессе проверки.
shansung: для начала -- понять, что вы хотели и как это делается с помощью сокетов.
По коду создаётся впечатление, что вам нужно было соединение TCP, т.е. SOCK_STREAM, но вместо этого по какой-то причине (догадываюсь, что кто-то не осилил сделать фрейминг своих сообщений) SOCK_STREAM был заменён на SOCK_DGRAM, который работает совсем по-другому.
> скомпилированные нативные модули вроде EXE, ELF, DLL, LIB, SO и прочих не имеют стандартизированных способ хранить информацию о классах.
Это не совсем так. Отладочная информация DWARF позволяет хранить описание структур и классов, причём не только типы и названия полей, но и расположение полей в памяти. Просмотреть её можно, например, командой dwarfdump.
> "можно сгенерировать из самой dll"
> А способ сделать это не подскажете?
Я давно не имел дела с инструментами от MS.
В линуксе это делается командой nm. Можно попробовать натравить на dll nm из какого-ньть mingw.
> И как в таком случае быть с классами?
Если в dll нет отладочной информации -- то никак.
Если есть, можно попытаться её декодировать. Опять же, виндового инструмента не подскажу.
> Переменная будет размещена в стеке, не в куче?
В зависимости от того, где будет такая конструкция: если внутри функции, без слова static перед ней -- будет на стеке, если добавить static -- будет в статической памяти, если вне функции -- будет в глобальной памяти.
Ещё такую конструкцию можно поместить в другую структуру или класс, тогда это не определение переменной, а определение нового поля этого класса или структуры.
> я попросил помощи в конкретно поставленной задаче
Очень часто правильное решение состоит не в том, чтобы решить данную задачу, а в том, чтобы избавиться от неё. Подумайте об этом.
Ваш пример в вопросе вообще не работает, в отличие от моего. Вы б хоть его попробовали, для разнообразия.
В моём примере не надо ждать curl после каждого запуска.
NO_GLITCH: в моём ответе отправка запроса, получение ответа и запись его в файл выполняются в параллельных процессах, сам цикл по их запуску должен выполниться очень быстро, а дальше надо ждать самого медленного curl.
> Ну вообще имелось ввиду не просто тупой перехват.
Ну вообще вы не написали, что "имелось в виду", а телепатию я не практикую. Текст под заголовком -- как раз подходящее место для того, чтобы развёрнуто сформулировать вопрос для обычных людей.
> А как бы устранения того синего экрана. Без вылета в синий экран.
Синий экран генерируется тогда, когда логика работы ядра уже нарушена настолько, что разработчик умывает руки и говорит: "Я не могу этого исправить. Теперь, чтобы не сломать всё ещё сильнее, остаётся только показать отладочную информацию и прекратить работу". Что вы собираетесь тут лечить?
> что означает person::person() в соурс файле из моего дискрипшена
В ваших исходниках нет такого слова.
Person::Person(int i)
{
int k = i;
}
-- это определение конструктора класса Person с одним параметром.
> Зачем так делать
Для отделения реализации от объявления. Для ускорения сборки и уменьшения числа файлов которые нужно перекомпилировать при изменении реализации person::person.
Они не используются для объявления. Их используют тогда, когда нужно указать положение в иерархии пространств имён, например для того, чтобы определить или сослаться на объект вне текущего пространства имён.
Смотрите на них как на / в файловой системе, на имена неймспейсов, структур и классов -- как на имена каталогов, а на имена функций и переменных -- как на имена файлов.
MiiNiPaa: используется, и gimple, и rtl, но они никуда не выводятся при нормальной работе и существуют только внутри исполняющегося компилятора. Результат же работы собственно компилятора c/c++ из gcc (cc1/cc1plus) -- это ассемблерный файл для целевой машины.
> В противном случае пришлось бы делать <кол-во яыков> × <кол-во платформ> трансляторов, вместо текущего <кол-во яыков> × <кол-во платформ>.
У вас слева и справа от "вместо" записано одинаковое значение.