Почему прототип требуется даже без какого-либо объявления класса?
Если я просто сделаю это:Ex1:
#include <iostream>
int main()
{
//try to call doSomething function
doSomething();
}
void doSomething()
{
std::cout << "Call me now!" << std::endl;
}
Я получаю ошибку компиляции! Потому что компиляция не знает, что такое doSomething.
Но если я изменю позицию doSomething, чтобы занять первое место, программа успешно скомпилируется.Ex2:
#include <iostream>
void doSomething()
{
std::cout << "Call me now!" << std::endl;
}
int main()
{
//try to call doSomething function
doSomething();
}
Я могу объявить прототип так:Пример 3:
#include <iostream>
void doSomething(void);
int main()
{
//try to call doSomething function
doSomething();
}
void doSomething()
{
std::cout << "Call me now!" << std::endl;
}
Но почему первый пример не работает? Почему мне даже нужно сначала объявить прототип или вызвать функции и, наконец, функцию main?
Спасибо!