Я беру дистанционный класс для начинающих с ++ и не могу решить эту ошибку компиляции. Он написан точно так же, как в примере книги, и когда мой брат вырезает и вставляет его в свой VS2015, он работает нормально, но в моем VS2017 это не так.
Я удалил и переустановил сообщество VS2017 безрезультатно.
Я занимаюсь программированием только 2 недели, поэтому я очень, очень новичок в этом.
Коды ошибок, которые я получаю:
ошибка E0167 Аргумент типа «const char» несовместим с параметром типа «char
ошибка C2664 void Hello (char): невозможно преобразовать аргумент 1 из const char [8] в char
Код:
// FUNCTION: Hello, prints out a welcome message on the screen.
void Hello(char* name)
{
cout << "Hello " << name << "!";
}
// FUNCTION: Main, program start.
int main()
{
Hello("Krister");
cin.get();
return 0;
}
Я действительно надеюсь, что кто-то может помочь мне с этим.
Всего наилучшего,
Jepp
Строковый литерал может быть указан как const char*
,
Это не может быть упомянуто char*
; это было возможно в старых версиях C, и некоторые старые компиляторы C ++ допускали это с предупреждением. В наше время это полностью запрещено.
Мимоходом "Krister"
для принятия функции char*
, вы просите компилятор попытаться преобразовать одно в другое; Это происходит из-за вышеуказанного правила, о чем свидетельствует сообщение об ошибке.
Чак const
там для большого успеха.
Если этот код взят из учебника, потерять его. Вот список хороших книг по C ++.
Просто чтобы дополнить ответ Гонки легкости на орбите, который описывает то, что вы определенно следует сделать. Причина различия между VS2015 и VS2017 заключается в том, что /permissive
флаг по умолчанию выключен, в отличие от первого.
Это означает, что VS2017 вполне может отклонить код, который принимает VS2015 «вашего брата», если только не опробованы варианты проекта.
Я рекомендую вам держать флаг в выключенном состоянии. Строгое соответствие — это хорошо, оно заставляет вас приобретать лучшие привычки и писать более переносимый C ++.