![]() |
|
Модераторы: bsa |
![]()
|
|
| BioMaX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Всем доброго времени суток, уже выделялся глупыми вопросами, вот очередной:
Есть вот такой warning, чем он страшен, и как его предотвратить, это не мой кусок кода а дернутый из Quake 3, как можно предположить он должен работать верно. Искал литературу по этому поводу, и читал форум, скажу безуспешно. src/cvar.c: In function ‘Cvar_FindVar’: warning: passing argument 1 of ‘Q_stricmp’ discards qualifiers from pointer target type note: expected ‘char *’ but argument is of type ‘const char *’
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
хммм. странно. должен быть не warning, а error.
какой компилятор, какая версия и какие опции компиляции ? а суть вот в чём: ф-ция Cvar_FindVar гарантирует тому, кто её вызовет, что данные, расположенные по указателю var_name не будут изменяться (const char *var_name). Ф-ция же Q_stricmp наоборот говорит, что данные, расположенные по указателю s1, могут быть изменены (char *s1). Соответственно, при вызове из ф-ции Cvar_FindVar ф-ции Q_stricmp, и передаче ей констового указателя компилятор видит "нарушение гарантии", и, ИМХО, должен выдавать ошибку вот http://liveworkspace.org/code/018e2af93d85...6586d1a84983ae0 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
borisbn, а с чего ты решил, что id Tech 3 написан на C++? По твоей же ссылке переключи на C, и все в ажуре. Двигло у них на C, а скрипты на C++ и персональном скриптовом языке.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
spyswamp, а, да. не разглядел
Тогда, если код ф-ции Q_stricmp можно изменять, то лучше воспользоваться советом volatile Если можно изменять только код ф-ции Cvar_FindVar, то можно сделать так
Если же ничего менять нельзя, то на данный кусок кода этот warning можно выключить -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| BioMaX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 3.7.2007 Репутация: нет Всего: нет |
Прошу прощения за столь долгую пропажу, да движок id tech 3 написан на С, и странно но http://liveworkspace.org/code/7ebb23f4e809...0dd282d5d717b66 не выдает никаких ворнингов.
Компилятор gcc , а если точней то (4:4.4.3-1ubuntu1) Я так понимаю дело в компиляторе, и как избежать этот ворнинг ? Это сообщение отредактировал(а) BioMaX - 7.9.2011, 05:30 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
выдает: http://liveworkspace.org/code/41ea421b6fdb...bcbd9f6befcfdc6 просто если это варнинг, а бинарник все равно собрался, то LWS игнорирует варнинги. другое дело, что это Си. в с++ это уже не варнинг, а ошибка: http://liveworkspace.org/code/ecc6c8c30def...5bc4533b3ef3843 Добавлено @ 05:44 не делать таких ошибок ;) Это сообщение отредактировал(а) boostcoder - 7.9.2011, 05:45 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Это сообщение отредактировал(а) borisbn - 7.9.2011, 08:25 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |