Можно ли скрыть предупреждения компилятора?

 
   string st = "";
   int i = 1;
   
   st = "text" + i;
   
   st = "text" + (string)i;


Предупреждение на строке st = "text" + i;  ну оно и понятно

В примере все просто, но в реальных проектах строки собираются гораздо сложней и раздувать строку в два, а то и три раза больше по размеру из-за указания везде преобразования int в string, совсем не хочется.

Я понимаю с другими типами данных, но с int он и в африке инт, когда вываливается таких 600 штук и что бы найти сообщение об ошибке, надо прокручивать этот список постоянно, достает.

А втыкать везде (string), IntegerToString(), хуже код читается

Как то можно этим предупреждения отключить?

StringConcatenate() не удобно использовать

 
Может через перегрузку операций можно избавиться, не разу не делал это, вроде оно только для объектов и структур возможно работает
 

А чего бы правильно это не написать и все ок будет :-)

Сделать например через StringFormat ? 

ну ли макросы сделать короткие для той же IntegerToString ? 

что мешает сделать, что то типо 

#define itos(x) IntegerToString(x) 


А вообще когда однотипных данных с ошибками много хорошо выручает Ctrl+H

 
Alexandr Gavrilin:

А вообще когда однотипных данных с ошибками много хорошо выручает Ctrl+H

Не, не поможет, названия везде разные


Alexandr Gavrilin:

#define itos(x) IntegerToString(x) 

За это спасибо, не знал, я бы только так сделал

string itos(int x)
{
   return IntegerToString(x);
}

Теперь сделал так

#define is(x) IntegerToString(x) 
#define s string

st = "text" + is(i);
st = "text" + (s)i;
 
Код с варнингами  - плохой код. Когда работал программистом, нас за выкладывание такого кода на сервер лишали премии. Потому что варнинги часто сигнализируют о скрытой ошибке. И я в этом многократно убеждался.
 
Alexey Volchanskiy:
Код с варнингами  - плохой код. Когда работал программистом, нас за выкладывание такого кода на сервер лишали премии. Потому что варнинги часто сигнализируют о скрытой ошибке. И я в этом многократно убеждался.
Варнинг варнингу рознь.  В рассматриваемой ситуации необходимость варнинга довольно спорна.  К примеру C#, известный своей педантичной строгостью, не выдаёт никаких варнингов в данном случае.
 
Alexey Volchanskiy:
Код с варнингами  - плохой код. Когда работал программистом, нас за выкладывание такого кода на сервер лишали премии. Потому что варнинги часто сигнализируют о скрытой ошибке. И я в этом многократно убеждался.

Правильно делали.

Код должен компилироваться без единого варнинга. 

Функции преобразования значений в строки - очень полезные и нужные функции, не страшно, что строка становится длиннее. Зато мы точно знаем, в каком месте происходит конвертация.

Меня удивляет народ, который мало того, что выключает директиву strict, так еще и не обращает внимания на варнинги.

 
Alexey Navoykov:
Варнинг варнингу рознь.  В рассматриваемой ситуации необходимость варнинга довольно спорна.  К примеру C#, известный своей педантичной строгостью, не выдаёт никаких варнингов в данном случае.

Ну и, по-моему, это плохо.  Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте программы такой код должен быть. А если его нет - должно быть предупреждение.

 
Georgiy Merts:

Ну и, по-моему, это плохо.  Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте программы такой код должен быть. А если его нет - должно быть предупреждение.

Что плохого? Ну предупредил он меня и что от этого изменится, компилятор же сам преобразовал в стринг и предупредил (неявное преобразование из «числа» в «строку»), я на это и рассчитывал, что он его сам преобразует, зачем мне дополнительный код писать для этого

И если это плохо, что будет если я сам тип инт в стринг не переведу? 

Можно также варнингами журнал засыпать, что вы не указали не обязательные параметры в функции, надо все указывать а то мало ли чего! :) ни чего не будет, но это плохо!

 
Georgiy Merts:

Ну и, по-моему, это плохо.  Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте программы такой код должен быть. А если его нет - должно быть предупреждение.

Смысл предупреждений в том, чтобы сигнализировать о потенциальной ошибке.  В чём же здесь потенциальная ошибка?  Если бы человек вместо конкатенации строк хотел просуммировать два числа, то результат выражения тоже бы присваивался числовой переменной, а не строковой.  Но у него стринг.  Выходит что он и тут ошибся?  Т.е. компилятор его предупреждает о том, что он вероятно ДВАЖДЫ мог ошибиться?  Не кажется ли это чрезмерным?

Причина обращения: