2010-11-22 3 views
2

Ceci est une question aléatoire qui m'est venue, évidemment je ne voudrais pas le faire parce que c'est une mauvaise pratique, mais est-il possible de compiler et d'exécuter du code à partir d'un fichier sans extension? Est-ce que cela fonctionne avec c, C++, java, python, toutes les langues? Si c'est le cas, est-ce que l'extension est plus une propriété de styliste ou a-t-elle un but pour autre chose?Un compilateur peut-il compiler du code sans extension?

+2

Les extensions de fichier ne veulent rien dire. Je peux nommer un fichier HTML avec une fin .jpg. C'est juste des données sur un disque: la façon dont le logiciel interprète les données est ce qui est important. –

Répondre

5

L'extension ne veut rien dire. Juste un moyen de vous aider à garder une trace de quel fichier est quoi. (aide également des choses comme un explorateur de GUI ouvrent le dossier dans le bon programme).

(Java peut être utile parce que la spécification de la langue indique qu'un fichier source se termine par .java, mais il peut y avoir un moyen de le pirater).

+1

Bien sûr, il est plus difficile pour une interface de compilation de servir plusieurs langues. Mais oui, l'extension de fichier est nulle part aussi importante que beaucoup de gens pensent. – delnan

3

Cela dépend vraiment du compilateur. Par exemple, j'imagine qu'il existe des répartiteurs de compilateurs C/C++ qui font des hypothèses basées sur le fichier se terminant par .c ou .cpp mais il peut également y avoir des options de ligne de commande pour spécifier explicitement comment un fichier doit être géré.

4

Cela dépend plus du compilateur utilisé que de la langue. Par exemple. gcc/g ++ dispose d'une option de ligne de commande -x <language> qui permet de remplacer la détection en fonction de l'extension du fichier. Un cas d'utilisation utilise - (c'est-à-dire stdin) comme entrée.

+0

Si vous n'avez même pas besoin d'un fichier, comment pouvez-vous besoin d'une extension? :) – BCS

1

De nombreux compilateurs peuvent accepter plusieurs types de fichiers dans une construction et utiliser l'extension d'un fichier pour déterminer ce qu'il faut en faire. Par exemple, on pourrait être en mesure de dire:

 
acmecompile foo.c bar.c fred.cpp wow.asm lib1.lib compilething.obj -o result.exe 

Il utiliserait les extensions des différents fichiers pour déterminer que les deux premiers doivent être nourris par le compilateur C, l'autre par un compilateur C++, et la prochaine à travers un assembleur. Les deux derniers doivent être directement transmis à l'éditeur de liens.

Souvent, il y aura des moyens de dire à un compilateur qu'un fichier particulier doit être manipulé d'une manière particulière indépendamment de son extension; par exemple, il peut parfois être souhaitable que certains fichiers d'une application multi-ciblée soient compilés en C pour certaines cibles et C++ pour d'autres (sur un de mes projets, la cible primaire est construite en C et utilise des registres d'E/S matériels; une autre cible, construite avec C++, remplace ces registres par des propriétés).

Questions connexes