Не пойму как работает void в c++

247
09 июля 2022, 10:00

Не пойму как работает 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;}
Answer 1

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();
READ ALSO
Вытащить json из html

Вытащить json из html

Есть html (это лишь небольшой кусок html)

277
Вопрос по MVC и выбору вариантам ответа

Вопрос по MVC и выбору вариантам ответа

Есть вопрос по идеологииМеня два раза заваливали на собеседованиях на нем и хочу понять как же все таки правильно делать согласно адептам...

247