2010-09-23 5 views
2

Quoi de plus efficace avec le code C que je suis en train de travailler, en déplaçant mon code dans un programme C existant ou avec un fichier h #include pour qu'il appelle le fichier .c séparé?Quoi de plus efficace avec le code C?

Lorsque cela est compilé dans un fichier .exe, comment cela fonctionne-t-il en l'incorporant dans le code original par rapport à un fichier h et un fichier .c séparé? Je ne suis pas sûr combien de lignes de code le programme a que j'incorporerais cet autre code dans mais mon code est seulement environ mille lignes de code.

Merci, DemiSheep

Répondre

9

Il n'y a pas de différence d'efficacité entre le maintien de code dans un seul fichier .c ou dans plusieurs fichiers .c liés dans le même exécutable, car une fois le fichier exécutable est créé, il est probable qu'il contiendra le même code binaire quelle que soit la méthode choisie. Cela peut être facilement vérifié avec un désassembleur binaire, bien sûr.

Qu'est-ce qu'un seul fichier .cpeut changement, cependant, est la vitesse de compilation , qui peut être plus rapide pour un seul fichier que pour un tas de fichiers qui doivent être reliés entre eux. IIRC, une des raisons pour lesquelles la méthode de distribution de source préférée de SQLite est un énorme "fichier C amalgamé" est la vitesse de compilation.


Cela dit, vous ne devriez vraiment pas vous préoccuper de problèmes de ce genre. Do divisez vos programmes en modules distincts, chacun avec une interface propre et un fichier d'implémentation distinct.

+0

Les réponses d'Eli sont également vraies lorsque vous utilisez des bibliothèques (ok, à part un très léger temps système au moment du chargement). –

+0

@Mario: vous voulez dire les bibliothèques dynamiques, bien sûr (.so/.dll). La liaison statique n'a pas non plus d'effet sur la vitesse d'exécution du code. –

+0

Le bit sur la vitesse de compilation est un déchet. Si vous divisez votre code en plusieurs fichiers sources, vous pourrez généralement compiler beaucoup plus rapidement car vous n'aurez qu'à compiler les fichiers sources que vous avez modifiés. Ceci est une pratique acceptée et a été depuis l'aube de «faire». – JeremyP

0

Je sais que cela a déjà une bonne réponse qui dit pas de différence mais je voulais ajouter cette

La directive #include indique la préprocesseur pour traiter le contenu de un fichier spécifié comme si ces contenus avaient est apparu dans le programme source au le point où la directive apparaît.

Je l'aurais écrit moi-même mais le msdn docs le dit très bien.

Questions connexes