Сообщения на форуме пользователя Andrey (195 стр.)
reinterpret_cast<>() vs ..._cast<>() | 21 фев. 2006 | 15:37 | #18 |
---|
DEN
>Хмм.... Можно пример такой библиотеки?
ogg/vorbis по примеру из статьи про OpenAL тут на сайте, там как раз void * к istream но я пепределал на FILE *
>Хмм.... Можно пример такой библиотеки?
ogg/vorbis по примеру из статьи про OpenAL тут на сайте, там как раз void * к istream но я пепределал на FILE *
reinterpret_cast<>() vs ..._cast<>() | 21 фев. 2006 | 14:47 | #15 |
---|
DEN
>1. И FILE*, и fstream*, и ваще любой указатель на данные к void* кастуктся статик_кастом.
согласен
но он предуман взамену стиля преобразования C
>2. Делать общую функцию и для FILE* и для fstream* через void* - это маразм.
так требует сторонняя бибилиотека и не надо говорить что она написана криво.
>1. И FILE*, и fstream*, и ваще любой указатель на данные к void* кастуктся статик_кастом.
согласен
но он предуман взамену стиля преобразования C
>2. Делать общую функцию и для FILE* и для fstream* через void* - это маразм.
так требует сторонняя бибилиотека и не надо говорить что она написана криво.
reinterpret_cast<>() vs ..._cast<>() | 21 фев. 2006 | 14:19 | #13 |
---|
DEN
>Хороший стиль программирования это не использовать "преобразования совсем разных типов".
когда нибудь возникнет эта задача и она возникнет не от того что разные типы и это плохо.
Например указатель на функцию чтения файла:
один из параметров которой это void * который предполагает указатель для работы с файлом.
void * в этом случае сделан для универсальности.
вот и встретились преобразования разных типов например к FILE* к fstream* и т.д.
или этот оператор придумали для тех кто програмиирует в плохом стиле?
тут много будет мнений.
>Хороший стиль программирования это не использовать "преобразования совсем разных типов".
когда нибудь возникнет эта задача и она возникнет не от того что разные типы и это плохо.
Например указатель на функцию чтения файла:
один из параметров которой это void * который предполагает указатель для работы с файлом.
void * в этом случае сделан для универсальности.
вот и встретились преобразования разных типов например к FILE* к fstream* и т.д.
или этот оператор придумали для тех кто програмиирует в плохом стиле?
тут много будет мнений.
C++ vs C# | 21 фев. 2006 | 14:01 | #189 |
---|
Tharnum
Ты просто супер правильно говоришь!!!C# полный отстой как и Java.
Я думаю C++ не должен умереть с появлением C#.
И как это многие утверждают что Direct3D на C# ненемного уступает скорости на C++?
Я как-то наблюдал ситуацию многие кто на C++ совсем буб-бум, сразу круто начали писать и разбираться в C#.
Ты просто супер правильно говоришь!!!C# полный отстой как и Java.
Я думаю C++ не должен умереть с появлением C#.
И как это многие утверждают что Direct3D на C# ненемного уступает скорости на C++?
Я как-то наблюдал ситуацию многие кто на C++ совсем буб-бум, сразу круто начали писать и разбираться в C#.
reinterpret_cast<>() vs ..._cast<>() | 21 фев. 2006 | 13:55 | #11 |
---|
WebErrAtor
я считаю что при програмировании на C++ для преобразования совсем разных типов, рекомендуется использовать собственный оператор преобразования типа т.е. reinterpret_cast. Это хороший стиль программирования
я считаю что при програмировании на C++ для преобразования совсем разных типов, рекомендуется использовать собственный оператор преобразования типа т.е. reinterpret_cast. Это хороший стиль программирования
Вопрос по C++ (указатели) | 19 фев. 2006 | 14:07 | #1 |
---|
__Andrey__
>Имеет ли мне смысл при инициализации объекта создать указатели на те переменные большой структуры которые часто ?>будут встречаться в вычислениях и в формулах и при стложных подсчётах использовать именно их, что бы зря не >производить лишние вычисления.
сделай static переменную внутри объекта. Если у тебя есть наследования то эту переменную храни в родителе. тогда избежишь хранения 1 и того-же указателя во всех объектах.
>Будет ли это
>cpDirect3DDevice->SetTexture (4, pTextura001);
>работать быстреее чем это
>cpDirect3DDevice->SetTexture (4, csObjectsContent_ptr->SetOfTexturesAndMaterials.ArrayOfTexture[AmbientTextureNum]); ?
мне кажеться практически одинаково, и компилятор скорей всего может это оптимизировать.
>Имеет ли мне смысл при инициализации объекта создать указатели на те переменные большой структуры которые часто ?>будут встречаться в вычислениях и в формулах и при стложных подсчётах использовать именно их, что бы зря не >производить лишние вычисления.
сделай static переменную внутри объекта. Если у тебя есть наследования то эту переменную храни в родителе. тогда избежишь хранения 1 и того-же указателя во всех объектах.
>Будет ли это
>cpDirect3DDevice->SetTexture (4, pTextura001);
>работать быстреее чем это
>cpDirect3DDevice->SetTexture (4, csObjectsContent_ptr->SetOfTexturesAndMaterials.ArrayOfTexture[AmbientTextureNum]); ?
мне кажеться практически одинаково, и компилятор скорей всего может это оптимизировать.
Ошибка с указателями,не могу ее найти.Помогите. | 19 фев. 2006 | 12:47 | #15 |
---|
COTOHA
все что могу посоветовать при работе с указателями сначала инициализировать eуказатели NULL
а потом при обращении к ним проверять на NULL
в этом сучаем ты избежишь сразу 2 ошибок: 1. обращение к нулевому указателю 2. Ображение к неинициализированному указателю т.е. к мусору
все что могу посоветовать при работе с указателями сначала инициализировать eуказатели NULL
а потом при обращении к ним проверять на NULL
в этом сучаем ты избежишь сразу 2 ошибок: 1. обращение к нулевому указателю 2. Ображение к неинициализированному указателю т.е. к мусору
Непонятки с PointSprite | 18 фев. 2006 | 22:51 | #1 |
---|
iii
я использовал интерфейс точечных спрайтов но не обращал внимание... надо как то посмотреть...
я использовал интерфейс точечных спрайтов но не обращал внимание... надо как то посмотреть...
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 22:48 | #11 |
---|
Glorg
все понятно спасибо тебе
Тема закрыта.
все понятно спасибо тебе
Тема закрыта.
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 20:15 | #9 |
---|
Glorg
все понятно спасибо за разъяснение я так и примерно предполагал про что ты написал
>WinAPI функции надёжнее в этом плане
блин ну если все так страшно то тут и Win32 функции могут не помочь...
неужели sprintf сильно отличается от wsprintf ну если не считать whar_t * ?
все понятно спасибо за разъяснение я так и примерно предполагал про что ты написал
>WinAPI функции надёжнее в этом плане
блин ну если все так страшно то тут и Win32 функции могут не помочь...
неужели sprintf сильно отличается от wsprintf ну если не считать whar_t * ?
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 17:51 | #7 |
---|
Glorg
во спасибо большое лишней функции не будет, и еще дополнительно буду хнать что писалось или читалось по адресу
>Небольшая добавка. При обработке исключений лучше использовать WinAPI функции, например wsprintf(). Шансы что приложение отработает правильно - несколько выше, поскольку гарантировать что твой код не попортил CRT кучу иногда нельзя.
хм... очень непонятно...
а что ANSI sprintf может попортить что не попортит wsprintf?
во спасибо большое лишней функции не будет, и еще дополнительно буду хнать что писалось или читалось по адресу
>Небольшая добавка. При обработке исключений лучше использовать WinAPI функции, например wsprintf(). Шансы что приложение отработает правильно - несколько выше, поскольку гарантировать что твой код не попортил CRT кучу иногда нельзя.
хм... очень непонятно...
а что ANSI sprintf может попортить что не попортит wsprintf?
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 15:36 | #5 |
---|
Спасибо всем разобрался вот хороший обработчик ошибок:
int filter(int code, _EXCEPTION_POINTERS *ep) { if (ep) { enum {size = 200}; char buf[size] = {'\0'}; const char* err = "Fatal error, exeption code: 0x"; const char* mes = "\nProgram terminate"; if (ep) //пишем в буфер информацию о коде исключения, а адрес указателя, адрес инсттрукции sprintf(buf, "%s%x%s%x%s%x%s", err, ep->ExceptionRecord->ExceptionCode, ",data adress: 0x", ep->ExceptionRecord->ExceptionInformation[1],",instruction adress: 0x", ep->ExceptionRecord->ExceptionAddress, mes); else sprintf(buf, "%s%x%s", err, code, mes); Log::write(buf); } return EXCEPTION_EXECUTE_HANDLER; } __try { //тут идет работа приложения и возможно ошибка при работе с памятью... } __except (filter(GetExceptionCode(), GetExceptionInformation())) { //тут ничего не делаем т.к. делат все функция filter } |
Правка: 18 фев. 2006 15:37
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 15:00 | #4 |
---|
Glorg
Спасибо большое!!!
>Используешь: GetExceptionInformation(), Получаешь: EXCEPTION_POINTERS, в нём тебя интересует указатель на >EXCEPTION_RECORD.
вот пробоал использовать но что-то не компилиться :( вот ошибки:
e:\Andrey\Projects\skeletons_common\Application.cpp(251): error C2707: '_exception_info' : bad context for intrinsic function
e:\Andrey\Projects\skeletons_common\level4.h(2886): warning C4228: nonstandard extension used : qualifiers after comma in declarator list are ignored
смотрел пример из MSDN там есть filter
я его переделал получилось вот что: но почему-то ep == NULL :(
Спасибо большое!!!
>Используешь: GetExceptionInformation(), Получаешь: EXCEPTION_POINTERS, в нём тебя интересует указатель на >EXCEPTION_RECORD.
вот пробоал использовать но что-то не компилиться :( вот ошибки:
e:\Andrey\Projects\skeletons_common\Application.cpp(251): error C2707: '_exception_info' : bad context for intrinsic function
e:\Andrey\Projects\skeletons_common\level4.h(2886): warning C4228: nonstandard extension used : qualifiers after comma in declarator list are ignored
смотрел пример из MSDN там есть filter
я его переделал получилось вот что: но почему-то ep == NULL :(
Правка: 18 фев. 2006 15:01
Win32: Как в блоке в блоке __try...__except получить адрес указателя? | 18 фев. 2006 | 14:08 | #2 |
---|
J_f_S
>Дык если бросается исключение, это и значит, что адрес не валидный.
Мне нужно знать 1 из вариантов указатель нулевой или с мусором. почитай повнимательней пост.
>Дык если бросается исключение, это и значит, что адрес не валидный.
Мне нужно знать 1 из вариантов указатель нулевой или с мусором. почитай повнимательней пост.