Deita
@Deita

Почему в Си после main() не ставят ;?

Изза чего после круглых скобок у main не ставят точку с запятой, эта строка работает на другом языке?

#include <stdio.h>

int main (void)<b>;</b> — ?
{
  printf ("Hello, World!");
  return 0;
}
  • Вопрос задан
  • 295 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему в Си после main() не ставят ;?

в С при определении функции не ставят ; между объявлением и телом функции, не только для main, но и для любой другой функции. Согласно стандарту языка, например С99 приводит следующий синтаксис определения функции:
function-definition:
    declaration-specifiers declarator declaration-list<opt> compound-statement
declaration-list:
    declaration
    declaration-list declaration


Этот синтаксис включает в себя также старый формат определения функции (без прототипа), в котором все аргументы должны быть объявлены между закрывающей круглой скобкой и открывающей фигурной, например (из того же стандарта):
extern int max(a, b)
int a, b;
{
    return a > b ? a : b;
}

Однако, этот список должен содержать как минимум одно объявление и не может состоять из одной только ;.

эта строка работает на другом языке?

о каком "другом" языке речь?
Ответ написан
@res2001
Developer, ex-admin
В Си различают определение функции и предварительное объявление функции (он же прототип).
Точка с запятой ставится только в случае предварительного объявления функции.
Например:
int func(int a, inb);     // предварительное объявление
int func(int a, inb) { return a+b; }       // определение функции

В вашем примере main - это определение функции - точка с запятой не ставится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы