Пытаюсь повторить гайд
отсюда. Если копирую код как есть
#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 разные стандарты Си но не помогает.
конечно можно просто всегда засовывать функции в начало до основной программы, но мне интересно почему у автора гайда это работает а у меня не работает.