我现在正在做一个大项目,维护所有这些包括警卫的东西让我抓狂!手写是令人沮丧的浪费时间.尽管许多编辑器都可以生成include-guards,但这并没有多大帮助:
编辑器根据文件名生成保护符号.当不同目录中有相同文件名的标题时,就会出现问题.他们两个都会得到同样的后卫.将目录 struct 包含到保护符号中需要编辑器采用一些奇特的方法,因为宏中的斜杠和反斜杠并不是最好的方法.
当我必须重命名一个文件时,我也应该重命名所有的include警卫(在ifndef中,定义,最好是endif的注释).真烦人.
预处理器充斥着成吨的符号,却不知道它们是什么意思.
尽管定义只包含一次,编译器仍然会在每次遇到头包含时打开头.
包括不适合名称空间或模板保护.事实上,它们正在颠覆名称空间!
你的守卫符号可能不会是唯一的.
当程序在单个目录中包含少于1000个标题时,它们可能是可接受的解决方案.但是现在呢?它很古老,与现代编码习惯无关.最让我困扰的是,这个问题几乎可以通过#pragma once指令完全解决.为什么它不是一个标准?