Не пойму как работает void
в с++. Где-то читал, что если перед функцией ничего не стоит, то подразумевается что там стоит void
. Но если я его убираю, то вываливается целая куча ошибок.
#include <iostream>
using namespace std;
void line() , msg();
int main()
{
cout << "HW" << endl;
line();
msg();
return 0;
}
void line(){cout << "line" << endl;}
void msg(){cout << "msg" << endl;}
C++ требует явного указания типов. Правило неявного int
(но не void
) есть в C.
В принципе компилятор сразу так и пишет при попытке убрать тип:
error: C++ requires a type specifier for all declarations
Поэтому просто указывайте тип там, где требует язык.
А вот в C, например, следующая программа успешно компилируется, хоть и с ворохом предупреждений:
line() , msg();
int main()
{
line();
msg();
}
line(){}
msg(){}
warning: type specifier missing, defaults to 'int' [-Wimplicit-int] line() , msg();
warning: type specifier missing, defaults to 'int' [-Wimplicit-int] line() , msg();
warning: type specifier missing, defaults to 'int' [-Wimplicit-int] line(){}
warning: non-void function does not return a value [-Wreturn-type] line(){}
warning: type specifier missing, defaults to 'int' [-Wimplicit-int] msg(){}
warning: non-void function does not return a value [-Wreturn-type]
Дополнительно замечу, что обычно рекомендуется не объединять несколько объявлений на одной строке с общим типом. Т.е. вместо
void line(), msg();
лучше для наглядности написать
void line();
void msg();
Есть вопрос по идеологииМеня два раза заваливали на собеседованиях на нем и хочу понять как же все таки правильно делать согласно адептам...