Компилятор ругается на условие цикла do...while

Напишите функцию с именем hms_to_secs(), имеющую три аргумента типа int: часы, минуты и секунды. Функция должна возвращать эквивалент переданного ей временного значения в секундах (типа long). Создайте программу, которая будет циклически запрашивать у пользователя ввод значения часов, минут и секунд и выводить результат работы функции на экран.

#include <iostream>
using namespace std;

long hms_to_secs(int, int, int);

int main()
{
    do
    {
        char select, temp;
        int hour, min, sec;
    
        cout << "Введите время в формате ч:мин:сек: ";
        cin >> hour >> temp >> min >> temp >> sec;
        cout << "Время в секундах равно: " << hms_to_secs(hour, min, sec);
        cout << "Повторим? у/n?: ";
        cin >> select;
    }
    while (select == 'y');
    return 0;
}

long hms_to_secs(int hr, int min, int sec)
{
    long times = hr * 3600 + min * 60 + sec;
    return times;
}

Компилятор ругается на сравнение char и int в условии цикла do...while: while (select == 'y'); Но ведь у меня переменная select определена как char. Помогите разобраться пожалуйста! Сообщение компилятора:

error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   24 |     while (select == 'y');

Ответы (1 шт):

Автор решения: Harry

Смотрим:

do
{
    char select, temp;   // <-- Здесь переменная объявлена
    cin >> select;
}                        // <-- Здесь закончилась ее область видимости
while (select == 'y');   // <-- С КАКОЙ переменной вы сравниваете 'y'?

Где-то в инклудах есть что-то такое... В VC++ нет, и он честно ругается на необъявленную переменную.

P.S. Да, поискал... в GCC это функция

int select(int, fd_set*, fd_set*, fd_set*, timeval*)
→ Ссылка