10

Leí la documentación en MSDN, pero al final no obtuve una idea clara de cuál es la diferencia práctica entre ellos, exactamente. Ambos parecen requerir stdafx.h para agregarse en la parte superior de cada archivo * .cpp.¿Cuál es la diferencia entre "Crear encabezado precompilado" (/ Yc) y "Usar encabezado precompilado" (/ Yu) en Visual Studio?

Estoy usando VS2008.

¿Alguien puede ayudar a aclarar las cosas?

+0

Un enlace a la documentación podría ser relevante. La respuesta trivial absurda sería: * uno se usa para ** crear ** el encabezado precompilado, el otro para ** usar ** it * (es decir, uno para que el compilador lea los encabezados normales y genere el encabezado precompilado, el otro para que el compilador no genere el encabezado precompilado, sino que lo use. –

Respuesta

11

Bueno, creo que primero debe comprender el propósito de los encabezados precompilados. En proyectos grandes, puede tomar años procesar todos los encabezados requeridos por una sola extensión de cliente, por ejemplo, por lo que algunas personas prefieren distribuir los archivos .pch junto con sus bibliotecas. Para generar los archivos .pch, utilice el indicador del compilador /Yc y la persona que desee consumir su biblioteca establecerá el indicador /Yu. Vea here y here para más detalles.

+0

No debería obtener archivos PCH de una biblioteca. En primer lugar, la mayoría del código usa múltiples bibliotecas, sin embargo, el compilador solo puede leer una PCH. los encabezados utilizados durante el desarrollo de la biblioteca probablemente sean bastante diferentes de los que necesita el código del consumidor. –

+0

@BenVoigt De hecho, probablemente no sea una práctica común. He visto esto hecho en un entorno bancario estrechamente sellado, donde la base del código era enormes y las extensiones del cliente se derivaron estrictamente de las cosas que recibió esta empresa. Por favor, siéntase libre de sugerir una edición si cree que esta respuesta necesita mejorar. –

21

Breve resumen de cómo utilizar archivos PCH en Visual Studio:

  • Todos los archivos cpp en el proyecto tiene que incluir stdafx.h (esto se puede cambiar a otra cosa si lo desea)
  • Seleccionar proyecto en Solution Explorer y en Properties -> C++ -> Precompiled Headers configure 'Crear/Usar encabezados precompilados' en 'Usar'. Hit Aplicar
  • Mientras que las páginas de propiedades todavía no se muestra seleccione stdafx.cpp en explorador de soluciones y establecer el valor a 'Crear'
+2

+1 Claro, simple y al grano responder. – CodeAngry

Cuestiones relacionadas