to int or not to int

Οταν κάποιος αρχάριος διαβάζει ένα βιβλίο για μια γλώσσα προγραμματισμού, το πιο συνηθισμένο πρόγραμμα που θα δει από τα πρώτα κι όλας παραδείγματα είναι το “Hello World!”. Ετσι και στα περισσότερα βιβλία για τις γλώσσες C και C++ που έχουν πέσει στα χέρια μου, το πρώτο πρόγραμμα που φέρνουν σαν παράδειγμα είναι αυτό. Ενα πολύ απλό προγραμματάκι που δεν κάνει τίποτα ουσιαστικό, παρά μόνο να τυπώνει στην οθόνη ένα κείμενο. Ε δεν είναι και τόσο δύσκολο πιά, αλλά αρκετά βιβλία ακόμα και αυτό δεν το έχουν σωστά.Βλέπω να παρουσιάζουν τον κώδικα με τις εξής μορφές (με κόκκινο παρουσιάζονται οι λανθασμένες δηλώσεις και με πράσινο οι σωστές):

void main()
{
    printf("Hello World!n");
}
void main(int argc, char* argv[])
{
    printf("Hello World!n");
}
int main()
{
    printf("Hello World!n");
    return 0;
}
int main(int argc, char* argv[])
{
    printf("Hello World!n");
    return 0;
}

Η function main πρέπει να επιστρέφει μια τιμή και αυτή πρέπει να είναι τύπου int. Ούτε void ούτε οτιδήποτε άλλο. Ακόμα κι αν μείνει κενός ο ορισμός της main χωρίς να δηλώνεται τίποτα (οπότε ο compiler θεωρεί από μόνος του ότι επιστρέφεται int), αυτό ο αρχάριος γιατί θα έπρεπε να το ξέρει και γιατί να τον μπερδεύουν τα βιβλία; Ο αρχάριος – και όχι μόνο – πρέπει να μάθει να ακολουθεί κάποιες πρακτικές που εκτός του ότι θα δίνουν τα σωστά αποτελέσματα, θα τον προφυλάσσουν και από παγίδες που μπορεί να έχει μια “περίεργη” δήλωση.