![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Переводя учебник Programming Linux Games, я обкатывал исходник, где показывалось, как при помощи SDL работать с потоками.
SDL ориентирована на работу с языком Си, но у меня в планах писать программу с использованием некоторых средств C++. При помощи компилятора gcc (программирую на Ubuntu Linux в терминале) следующие строчки: Код:
Соль в том, что при попытке компиляции этих строк при помощи g++ происходит ошибка invalid conversion from 'const void*' to 'void*' а вслед за ней, разумеется, initializing argument 2 of 'SDL_Thread* SDL_CreateThread(int (*)(*void), void*)' Проблема решается преобразованием типом в стиле Си - (void *): Код:
И всё же мне любопытно - почему при смене компилятора происходит подобного рода ошибка? g++ по-другому обрабатывает данные? И, несмотря на то, что решение найдено, повлияет ли смена компилятора на работу программы? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Разные компиляторы по-разному смотрят на неоднозначные ситуации и имеют различную политику обработки ошибок. Некоторые могут не обратить внимание на неявное преобразование строки к void*, другие более строго к этому отнесутся и выдадут ошибку, заставив вас явно указать, что это не ваша опечатка, а вы действительно хотите сделать то, что делаете.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
"Thread1" - это const char *. Без проблем это может неявно преобразоваться только к const void *. Константу отбрасывать неявно неправильно. А иначе не был бы нужен const_cast, да и смысла в константах бы не было.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
С const_cast всё работает как и прежде, с преобразованием (void *).
Ты хочешь сказать, что неявное преобразование может запутать программиста, и поэтому лучше пользоваться более явными методами? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
разные шрифты в Memo | das Ma:dchen | Компоненты Delphi | 1 | 29.05.2010 09:16 |
Разные формы, Дельфи | grom333 | Помощь студентам | 9 | 15.01.2010 22:07 |
fontdialog на разные поля | Михаил Юрьевич | Общие вопросы Delphi | 2 | 21.10.2009 14:32 |
сравнить разные строки | Katovski | Общие вопросы Delphi | 8 | 02.05.2008 21:10 |
Поисковики ! всякие разные | Virtson | Софт | 0 | 07.12.2007 19:18 |