Как можно получить предупреждения о печати g ++ для приведения типов к аргументам функций?

Возможный дубликат:
Могу ли я предупредить GCC о передаче слишком широких типов в функции?

Есть ли способ заставить gcc или g ++ выдавать предупреждение, когда я передаю подписанное int в функцию, которая принимает unsigned int?

Например:

int main(){
char buf[8];
int i;
for(i=0;i<6;i++)
buf[i] = 'a';
buf[6]='\0';
strcat(buf, " ");
strncat(buf, "happystacksmashingstring",-1 );
return 0;

}

вызовет разрушение стека, потому что strncat принимает size_t в качестве третьего аргумента, который часто является целым без знака. Тем не менее, команда:

g++ -Wall -Wextra -Werror -pedantic -W -Weffc++ -Wconversion test.c

который содержит все известные мне предупреждения, не выдает ошибок или предупреждений во время компиляции, а также разбитый стек во время выполнения.

gcc -Wall -Wextra -Werror -pedantic -W -Wconversion test.c

будут выдают ошибки о неявных преобразованиях в отличие. Почему флаг -Wconversion не работает должным образом с g ++?

1

Решение

Со страницы руководства g ++:

Предупреждения о преобразованиях между знаковыми и беззнаковыми целыми числами по умолчанию отключены в C ++, если явно не включена опция-Wsign-преобразование.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]