programacion principales lenguaje ejemplos definicion crear cabecera archivos c++ c include-guards

c++ - principales - ¿Cuándo no usar include guard en el archivo de cabecera?



include guard c++ (4)

Todos sabemos cuándo usar incluir guardia, pero ¿cuándo no debemos usarlo en nuestro proyecto?

Recientemente, vi un proyecto con compilación de mezclas (CUDA + GCC), un archivo de encabezado (archivo CUDA) se dejó deliberadamente sin incluir la protección. Solo tengo curiosidad por ello.


En nuestros proyectos nunca utilizamos incluir guardia. Estamos utilizando include antiguard:

#ifndef _stdafx_h_ #define _stdafx_h_ #else #error reinclude stdafx.h #endif

Porque si volviste a incluir el mismo encabezado, escribiste un código incorrecto o trabajaste con una arquitectura incorrecta.


Hay 2 escenarios fuera de mi cabeza:

  1. cuando desea activar / desactivar las capacidades de depuración (como funciona assert.h )
  2. para ''x-macro'' tipo de funcionalidad ''x-macro'' donde tiene el archivo de inclusión, realice 2 partes del problema, como definir una enumeración y luego definir una matriz de nombres de caracteres correspondientes a las enumeraciones

Las protecciones de inclusión se utilizan para que el archivo de inclusión se pueda incluir varias veces en una sola unidad de compilación sin que se produzcan declaraciones duplicadas.

No utilice los guardias de inclusión cuando el archivo debe incluirse varias veces en una sola unidad de compilación y esto no da lugar a declaraciones duplicadas.


Un caso en el que desea incluir el mismo archivo varias veces con diferentes parámetros. En este caso, el archivo de inclusión actuaría como una especie de plantilla. Un ejemplo son los scalers en Dosbox.