#c #g
#c #g
Вопрос:
У меня есть код, похожий на этот:
template<typename Ta, typename Tb> Ta doStuff(Ta a, Tb b)
{
...
return a/b;
}
Как говорится в названии, такой код вернет неправильные значения с Ta=int Tb= unsigned .
Есть ли способ получить предупреждение от g для этого случая?
Комментарии:
1. В качестве альтернативы предупреждениям, возможно, вы также могли бы использовать что-то вроде
make_signed
.
Ответ №1:
ДА. Использовать -Wsign-conversion
опцию:
[nawaz@./]$ g filename.cpp -Wsign-conversion
Комментарии:
1. Это -Wsign-conversion, но да, это то, что я искал, спасибо
Ответ №2:
Попробуйте с помощью: g -Wall code.cpp -выход o
Комментарии:
1. Стена: это включает все предупреждения о конструкциях, которые некоторые пользователи считают сомнительными, и которые легко избежать (или изменить, чтобы предотвратить предупреждение), даже в сочетании с макросами. Это также активирует некоторые зависящие от языка предупреждения, описанные в параметрах диалекта C и параметрах диалекта Objective-C и Objective-C . Документы GCC.
2. Я использую -Wall .. он не предупреждает
3. @KoKuToru:
-Wall
насколько я знаю, не содержит никаких предупреждений о преобразовании.4. In facts
-Wall
не включает-Wsign-conversion
(и, по-видимому, тоже не-Wextra
включает ).