Destin guish между типами - PullRequest
       0

Destin guish между типами

2 голосов
/ 29 марта 2020

У меня есть следующий код:

#include <iostream>
#include <string>

typedef unsigned char type1;
typedef unsigned long type2;

type1 f(type1 value)
{
    return value * 2;
}

int main()
{
  type1 value1 = 1;
  type2 value2 = 2000;
  int int1 = f(value1);
  int int2 = f(value2);  // here I would expect that the compiler warns me that I mix type1 and type2
  std::cout << int1 << std::endl;
  std::cout << int2 << std::endl;
}

Есть ли способ, которым компилятор предупреждает меня, если я смешиваю два типа type1 (unsigned char) и type2 (unsigned long)?

Спасибо Тедди

1 Ответ

1 голос
/ 29 марта 2020

Есть ли способ, которым компилятор предупреждает меня, если я смешиваю два типа type1 (unsigned char) и type2 (unsigned long)?

Да, если вы дадите -Wconversion на g cc или лязг, или /W3 на MSV C, они напечатают предупреждение для вашего примера.

(Они будут предупреждать вас, только если есть потенциальное изменение значения. Итак, преобразование unsigned char в unsigned long не генерирует предупреждения, поскольку это преобразование всегда сохраняет значение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...