В C ++ попытка вызова функции без действительного объявления в области действия является ошибкой (тогда как C требует, чтобы компилятор принял ее и сделал определенные предположения в таком случае).
Если у вас есть неопределенное внешнее значение на ссылке времени (в отличие от времени компиляции), это также остановит сборку - если компоновщик не сможет найти определение функции, которую вы вызвали (или попытался вызвать, в любом случае), поэтому он не может создать исполняемый файл.