@kotsmotritnastul

Почему в Visual Studio Code не работает объявление функций в конце кода?

Пытаюсь повторить гайд отсюда. Если копирую код как есть
#include <stdio.h>
 
// описание
void hello(void);
 
int main(void)
{
    hello();
    hello();
    return 0;
}
 
// определение
void hello()
{
    printf("Hello!\n");
}

то строка выводится один раз и программа не закрывается несмотря на return 0;.
если меняю код на
#include <stdio.h>
 void hello()
{
    printf("Hello!\n");
}
// описание
void hello(void);
 
int main(void)
{
    hello();
    hello();
    return 0;
}

то строка выводится два раза как и должна и программа корректно закрывается. причём в гайде прямо говорится
В данном случае несмотря на то, что определение функции идет после ее вызова, но так как ее описание идет до вызова, то компилятор уже будет знать о функции hello, и никаких проблем в работе программы не возникнет.
это гайд неправильный или я неправильно настроил компилятор? или это пример под другой компилятор? у меня вроде как gcc. я пробовал подсовывать в tasks.json разные стандарты Си но не помогает.

конечно можно просто всегда засовывать функции в начало до основной программы, но мне интересно почему у автора гайда это работает а у меня не работает.
  • Вопрос задан
  • 15 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы