Tenía la impresión de que "A D interface file contains only what an import of the module needs, rather than the whole implementation of that module." Para mí, eso se traduce en firmas, simplemente devuelve tipos, nombres y argumentos, de modo que el compilador sepa que es válido y el enlazador puede hacer el trabajo sucio más tarde.¿Qué NO está en un archivo de interfaz?
Ejecución de un archivo a través de dmd
, sin embargo, las tiras casi nada:
import std.stdio;
void SayHello(const string Name)
{
writeln("Hello, ", Name, "!");
}
dmd Interface.d -o- -H
// D import file generated from 'Interface.d'
import std.stdio;
void SayHello(const string Name)
{
writeln("Hello, ",Name,"!");
}
Apenas un modelo de optimización.
¿Qué es exactamente lo que se elimina en los archivos de interfaz?
(header-files añadieron porque es lo más parecido que pude encontrar.)
A menudo me he preguntado qué se necesita para hacer que los archivos .di tengan un formato binario con una copia serializada de la fuente con la mayor parte del trabajo ya hecho: mmap it, inserte un puntero en la tabla de símbolos correcta , hecho. – BCS
@BCS '.di' archivos no son realmente parte del estándar, por lo que no hay ninguna política para ponerse en el camino de esa idea. ¡Me pregunto por qué no lo han hecho! – Maxpm