escribí programa¿Por qué los archivos de cabecera C no aumentan el tamaño del binario?
class MyClass {
public:
int i;
int j;
MyClass() {};
};
int main(void)
{
MyClass inst;
inst.i = 1;
inst.j = 2;
}
y he realizado la siguiente C++.
# g++ program.cpp
# ls -l a.out
-rwxr-xr-x 1 root wheel 4837 Aug 7 20:50 a.out
Entonces, #include
d la iostream archivo de cabecera en el archivo de origen y que compilan de nuevo.
# g++ program.cpp
# ls -l a.out
-rwxr-xr-x 1 root wheel 6505 Aug 7 20:54 a.out
El tamaño del archivo, como se esperaba, se incrementó.
También escribí el siguiente programa en C
int main(void)
{
int i = 1;
int j = 2;
}
y compilé
# gcc program.c
# ls -l a.out
-rwxr-xr-x 1 root wheel 4570 Aug 7 21:01 a.out
Entonces, #include
D, el archivo de cabecera stdio.h y compilados de nuevo
# gcc program.c
# ls -l a.out
-rwxr-xr-x 1 root wheel 4570 Aug 7 21:04 a.out
Por extraño que parezca, el tamaño de los archivos ejecutables sigue siendo el mismo.
las definiciones 'extern' no generan código; simplemente dejan que el compilador sepa que existen, por lo que el compilador puede hacer referencia a ellos si realmente se usan. – bdonlan
Sí, una aclaración valiosa. –
No creo que sean 'externos', e incluso si lo son, tiene que haber algunas definiciones. Sus ctors/dtors son una (tal vez la única) causa del aumento del tamaño del ejecutable. – sbi