Ilias95 έγραψε:
...
Είναι "σωστή" αυτή η τακτική;
Κι αυτή σωστή είναι, αλλά συνηθίζεται στις βιβλιοθήκες. Αν δηλαδή φτιάξεις μια βιβλιοθήκη και δεν θέλεις να διαθέσεις τον κώδικά της, αλλά μόνο τα .o αρχεία της (τα οποία συνήθως δεν τα δίνεις χύμα, αλλά τα κάνεις archived σε ένα αρχείο .a) τότε είναι χρήσιμο η τεκμηρίωση των συναρτήσεων της βιβλιοθήκης να περιέχεται στο header file της βιβλιοθήκης, στις δηλώσεις δηλαδή των συναρτήσεων (και όχι στους ορισμούς τους, στα .c αρχεία).
Το header-file της βιβλιοθήκης θα το διαθέσεις έτσι κι αλλιώς, για να μπορούν να το κάνουν #include όσοι θέλουν να χρησιμοποιήσουν τις συναρτήσεις της βιβλιοθήκης.
Αυτό είναι το λεγόμενο data-hiding ή encapsulation, όπου δηλαδή διαθέτεις δημόσια τις δηλώσεις των συναρτήσεων μαζί με την τεκμηρίωσή τους, αλλά οι υλοποιήσεις των συναρτήσεων (οι ορισμοί δλδ) είναι private στα .o αρχεία της βιβλιοθήκης (αυτά ουσιαστικά έχουν την μορφή που έχουν και τα εκτελέσιμα αρχεία, χωρίς όμως το αρχικό τμήμα που θα τα χαρακτήριζε ως κανονικό εκτελέσιμα... τα εκτελέσιμα έχουν ένα platform dependent header στην αρχή τους, το οποίο αν το βρει το OS θεωρεί πως το εν λόγω αρχείο είναι εκτελέσιμο και το τρέχει).