Su código se compilará pero dará errores de enlace.
La construcción de un ejecutable de su proyecto implica dos etapas:
Durante Compilación el compilador simplemente traduce el código fuente en código objeto mediante la verificación de la semántica del lenguaje .
Durante Enlazando el enlazador en realidad busca las definiciones de los símbolos y crea un archivo ejecutable a partir de varios archivos de objetos (creados durante la compilación).
El compilador compila el código fuente en cada unidad de traducción (.cpp + archivos de encabezado) por separado y, por lo tanto, asume que la definición debe estar presente en algún otro archivo fuente. Es el Enlazador el que trata de encontrar referencias a las definiciones de función, y por lo tanto, la definición faltante será informada por el vinculador.
Tenga en cuenta que el enlazador tiene que vincular sólo aquellos símbolos que son utiliza por su programa,
Por ejemplo, si su programa declara una función, no definidos & después nunca usos/llamadas la función en cualquier lugar, el vinculador no necesita insertar el código para saltar a la dirección donde reside el código objeto para la función en cualquier sitio de llamada de función.
Dado este escenario, el vinculador simplemente nunca tendrá que buscar la definición de la función en absoluto. Por lo tanto, el código compilará y vinculará.
EN MIEMBRO, El error de enlace ocurrirá solo si la función con missing-definition se usa/llama explícitamente/implícitamente en alguna parte. – fizzbuzz
@fizzbuzz: Sí, por supuesto. Ese es el criterio básico. –
No recibo ningún error de compilación o enlace. Solo para agregar, no estoy usando la función en ningún lado. El código compila y enlaza bien en el archivo .lib. – akrohit