реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Gcc, выдает варнинг вместо ошибки.
ar__systems
сообщение Oct 7 2013, 15:19
Сообщение #1


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 **'
Go to the top of the page
 
+Quote Post
neiver
сообщение Oct 7 2013, 18:20
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



http://stackoverflow.com/questions/2287122...er-type-warning
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 7 2013, 19:03
Сообщение #3


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(neiver @ Oct 7 2013, 13:20) *



Это уже видел. Не работает, только если -Werror включить, но это будут все варнинги ошибками. Видимо так и поступлю, только не сразу.
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 8 2013, 07:38
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(ar__systems @ Oct 7 2013, 23:03) *
Выдает варнинг, тогда как я бы хотел видеть в этом месте ошибку. Как переключить?


Можно в конкретном месте ключи для конкретного кода переключать. Делается прагмами.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 8 2013, 14:31
Сообщение #5


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Ixt @ Oct 8 2013, 02:38) *
Можно в конкретном месте ключи для конкретного кода переключать. Делается прагмами.


А в чем смысл? Вы мне предлагаете вручную отлавливать ворнинги, потом их прагмами в ошибки переводить?

Я может неточно выразился, я хотел сказать все подобные ситуации должны приводить к ошибке.
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 8 2013, 15:44
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 8 2013, 17:14
Сообщение #7


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Ixt @ Oct 8 2013, 10:44) *
Да, предлагаю. Как я понял, вы готовы в некоторой мере на эту работу.

Это странное предложение, не имеющее ни малейшего практического смысла.
Go to the top of the page
 
+Quote Post
Lagman
сообщение Nov 9 2013, 10:54
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



а где там ошибка?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 9 2013, 18:09
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Функции вместо указателя на int (int*) передаётся указатель на указатель на int (int**).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Lagman
сообщение Nov 19 2013, 19:11
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(AHTOXA @ Nov 9 2013, 22:09) *
Функции вместо указателя на int (int*) передаётся указатель на указатель на int (int**).

ну она и будет работать с адресом который ей передали, который содержит адрес указателя на переменную!?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 19 2013, 23:43
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Но функция - то работает с адресом int, а не указателя на int.
Go to the top of the page
 
+Quote Post
alx2
сообщение Nov 20 2013, 06:48
Сообщение #12


Местный
***

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



Цитата(Genadi Zawidowski @ Nov 20 2013, 04:43) *
Но функция - то работает с адресом int, а не указателя на int.

Это нормально для языка C - там допустимо неявное приведение указателя к другому типу указываемого объекта. Поэтому только предупреждение.
В языке C++ такое приведение не допускается - будет выдана ошибка.


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
federal
сообщение Nov 24 2013, 19:51
Сообщение #13


Участник
*

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



ТС, когда такие вопросы задаешь, всегда указывай версию компилятора и аргументы сборки.

по теме, спасет:
-Werror -Wfatal-errors
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 30 2014, 08:32
Сообщение #14


неотягощённый злом
******

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



Цитата(federal @ Nov 24 2013, 23:51) *
по теме, спасет:-Werror -Wfatal-errors
+1
Но можно и более избирательно:
-Werror=foo

Также, весьма полезными ключиками в контексте темы могут быть:
-Wc++-compat
-Wcast-qual


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 18:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016