Was ist der Unterschied zwischen „include_lib“ und „enthalten“?Erlang: Was ist der Unterschied zwischen "include_lib" und "include"?
z.
-include_lib("eunit/include/eunit.hrl")
Was ist der Unterschied zwischen „include_lib“ und „enthalten“?Erlang: Was ist der Unterschied zwischen "include_lib" und "include"?
z.
-include_lib("eunit/include/eunit.hrl")
Die Art und Weise der Dokumentation the difference between include and include_lib beschreibt, ist:
include_lib
zuinclude
ähnlich ist, sollte aber nicht eine absolute Datei hinweisen. Stattdessen wird angenommen, dass die erste Pfadkomponente (möglicherweise nach der Variablensubstitution) der Name einer Anwendung ist.Beispiel:
-include_lib("kernel/include/file.hrl").
Der Code-Server verwendet Code: lib_dir (Kernel), um das Verzeichnis der aktuellen (letzten) Version von Kernel zu finden, und dann gehört das Unterverzeichnis für die Datei Datei gesucht .hrl.
So in Ihrem Beispiel, brauchen Sie nicht die Version von eunit darauf hinweisen, dass Sie enthalten, können Sie die neueste eunit.hrl der eunit sind inklusive: s, die in Ihrer Bibliothek Pfad vorhanden ist.
Ein Unterschied, der zunächst nicht offensichtlich ist, ist, dass -include
und -include_lib
einen anderen Satz von Pfaden verwenden, wenn Sie nach Header-Dateien suchen. -include_lib
verwendet tatsächlich den Codepfad, nicht den Headerdateipfad.
Daher erwartet das Flag erlc
einen Pfad zum -include
Suchpfad ist -I
; das Flag für -include_lib
ist -pa
/-pz
.
Bereits erwähnt ist die Tatsache, dass die Verwendung von -include_lib
uns davor bewahrt, das Modul für eine bestimmte Bibliotheksversion anzugeben (und damit zu binden).
Darüber hinaus gibt es eine Konvention, dass internen Header innerhalb des src/
Unterverzeichnis eines Projekts gespeichert werden und enthalten mit -include
. Externe Header (bestimmt durch andere Bibliotheken/Projekte verwendet werden) Dateien in include/
gespeichert werden und enthalten -include_lib
verwenden.
Ich glaube, Sie auch include_lib verwenden können Dateien, die Sie aus einer bestimmten Version einer installierten Anwendung hinzufügen möchten. –