2017-11-23 2 views
1

Cachiert der C-Compiler eine Header-Datei und analysiert sie nur einmal, wenn die Datei mit einem Kommentar beginnt?Verhindern Kommentare eine Kopfschutzoptimierung?

Die Frage bezieht sich auf Compiler, die Header zwischenspeichern können, um sie nicht mehr als einmal zu analysieren.

+4

Dies ist abhängig von der Implementierung. Der Compiler kann diese Information zwischenspeichern oder nicht. Einige opppilers haben das '#pragma once', das möglicherweise effizienter als Titelwächter ist. Aso lesen Sie dies: https://stackoverflow.com/questions/1143936/pragma-once-vs-include-guards –

Antwort

9

Ja, diese Optimierung ist abgeschlossen. gcc dokumentiert es ganz explizit hier: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html

Grundsätzlich, wenn Sie eine gut geschrieben enthalten Guard, gcc wird nicht die Überschrift zweimal berühren. Und ein Kommentar außerhalb des Include-Wächters stoppt die Optimierung nicht (ansonsten wäre es wertlos mit allen Lizenzkommentaren, die praktisch allen Open-Source-Headerdateien vorausgehen).