En lo que respecta al rendimiento, no lo he medido, pero se ha informado ampliamente de que los compiladores reconocen el idioma #includeguard y no vuelven a abrir/reprocesar los archivos que los utilizan (por lo tanto, los tratan como si hubieran usado #pragma once
) .
Aparte de ese beneficio de rendimiento potencial (que probablemente no exista), veo muy poco que #pragma once
ofrezca, es algo más conveniente cuando crea un nuevo encabezado, pero las protecciones realmente no son tan onerosas para instalar. Dado que #pragma once
no es particularmente convincente y como todavía trato ocasionalmente con un compilador que no lo admite, utilizo guardias.
Si se demostró que #pragma once
tuvo un efecto significativo en el rendimiento, ciertamente empezaría a usarlo.
Dicho eso, deseo que C se haya definido para incluir solo encabezados una vez, a menos que se invoque algún mecanismo para indicar que el encabezado debe procesarse cada vez que se incluye. Los tiempos en los que desea ese comportamiento están muy, muy por fuera, por las veces que no lo hace (y todavía encuentro encabezados de vez en cuando que no tienen guardias o #pragma once
). Pero no fue definido de esa manera, por lo que incluyen guardias es ...
:) gracias, déjame leer el artículo! – bdhar
Gracias Donal, he estado teniendo problemas al usar el botón de cotización de bloque últimamente, así que he estado tratando de evitarlo. No debería ser tan vago y solo hacerlo manualmente ... –