|
|
  |
Gcc, выдает варнинг вместо ошибки. |
|
|
|
Oct 7 2013, 15:19
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Код void Dummy(int* a) { *a = 0; };
void Test() { int* a = 0; Dummy(&a); }; Выдает варнинг, тогда как я бы хотел видеть в этом месте ошибку. Как переключить? test.c:1076:3: warning: passing argument 1 of 'Dummy' from incompatible p inter type [enabled by default] test_emac.c:873:6: note: expected 'int *' but argument is of type 'int **'
|
|
|
|
|
Oct 8 2013, 07:38
|
Частый гость
 
Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724

|
Цитата(ar__systems @ Oct 7 2013, 23:03)  Выдает варнинг, тогда как я бы хотел видеть в этом месте ошибку. Как переключить? Можно в конкретном месте ключи для конкретного кода переключать. Делается прагмами.
|
|
|
|
|
Oct 8 2013, 14:31
|
self made
   
Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795

|
Цитата(Ixt @ Oct 8 2013, 02:38)  Можно в конкретном месте ключи для конкретного кода переключать. Делается прагмами. А в чем смысл? Вы мне предлагаете вручную отлавливать ворнинги, потом их прагмами в ошибки переводить? Я может неточно выразился, я хотел сказать все подобные ситуации должны приводить к ошибке.
|
|
|
|
|
Oct 8 2013, 15:44
|
Частый гость
 
Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724

|
Да, предлагаю. Как я понял, вы готовы в некоторой мере на эту работу. Кстати, у Werror есть 2 метода использования. Возможно вам больше подойдёт второй: Цитата -Werror Make all warnings into errors. -Werror= Make the specified warning into an error. The specifier for a warning is appended, for example -Werror=switch turns the warnings controlled by -Wswitch into errors. This switch takes a negative form, to be used to negate -Werror for specific warnings, for example -Wno-error=switch makes -Wswitch warnings not be errors, even when -Werror is in effect. You can use the -fdiagnostics-show-option option to have each controllable warning amended with the option which controls it, to determine what to use with this option.
Note that specifying -Werror=foo automatically implies -Wfoo. However, -Wno-error=foo does not imply anything.
|
|
|
|
|
Nov 20 2013, 06:48
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(Genadi Zawidowski @ Nov 20 2013, 04:43)  Но функция - то работает с адресом int, а не указателя на int. Это нормально для языка C - там допустимо неявное приведение указателя к другому типу указываемого объекта. Поэтому только предупреждение. В языке C++ такое приведение не допускается - будет выдана ошибка.
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Nov 24 2013, 19:51
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 12-01-13
Из: Нижний Новгород
Пользователь №: 75 160

|
ТС, когда такие вопросы задаешь, всегда указывай версию компилятора и аргументы сборки.
по теме, спасет: -Werror -Wfatal-errors
|
|
|
|
|
Apr 30 2014, 08:32
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(federal @ Nov 24 2013, 23:51)  по теме, спасет:-Werror -Wfatal-errors +1 Но можно и более избирательно: -Werror=fooТакже, весьма полезными ключиками в контексте темы могут быть: -Wc++-compat -Wcast-qual
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|