Hola, tengo una duda, grande para mi pero pequeña para ustedes

Tengo entendido que el C es un lenguaje estructurado, entonces si tengo este programa...
#include <16f877.h>
#device ICD=TRUE
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=20000000)
#define GREEN_LED PIN_A5
#define YELLOW_LED PIN_B4
#define RED_LED PIN_B5
#define PUSH_BUTTON PIN_A4
light_one_led(int led) {
output_high(GREEN_LED);
output_high(YELLOW_LED);
output_high(RED_LED);
switch(led) {
case 1 : output_low(GREEN_LED); break;
case 2 : output_low(YELLOW_LED); break;
case 3 : output_low(RED_LED); break;
}
}
wait_for_one_press() {
while(input(PUSH_BUTTON)) ;
while(!input(PUSH_BUTTON)) ;
}
main() {
while(TRUE) {
light_one_led(1);
wait_for_one_press();
light_one_led(2);
wait_for_one_press();
light_one_led(3);
wait_for_one_press();
}
Se ejecutan "light_one_led(int led)" y "wait_for_one_press()" antes de ejecutarse "main()" o el programa si o si ejecuta primero la funcion que se llame main?
Espero sus respuestas
